Inhoudsopgave:

Zelfgemaakt Arduino-bord: 8 stappen
Zelfgemaakt Arduino-bord: 8 stappen

Video: Zelfgemaakt Arduino-bord: 8 stappen

Video: Zelfgemaakt Arduino-bord: 8 stappen
Video: A possible solution for "error occurred while uploading the sketch" on your Arduino 2024, November
Anonim
Zelfgemaakt Arduino-bord
Zelfgemaakt Arduino-bord

Door je eigen Arduino-Board te ontwerpen, leer je over een aantal nieuwe componenten en elektronische circuits, waaronder enkele geavanceerde onderwerpen zoals voeding, timingcircuit en het gebruik van ATmega IC (Integrated Circuit).

Het zal je in de toekomst helpen bij het maken van je eigen projecten zoals weerstation, domotica-schilden enz.

Het voordeel van de zelfgemaakte Arduino is dat deze een laag energieverbruik heeft en ervoor zorgt dat een project lang op een batterij kan draaien.

Bovendien kunt u het bord uitbreiden door digitale of analoge poortuitbreiding of enkele communicatiemodules toe te voegen.

Benodigdheden

de hardware

Om een minimalistische Arduino te bouwen, heb je de volgende hardware nodig:

1x ATmega328P-PU-microcontroller met Arduino-bootloader

1x 7805 lineaire spanningsregelaar (5v uitgang, 35v max ingang)

1x breadboard (ik gebruik 830 prikbord)

Diverse aansluitdraden

1x 16 MHz kristaloscillator

1x 28-pins ic-aansluiting

1x 1 μF, 25 V elektrolytische condensator

1x 100 μF, 25 V elektrolytische condensator

2x 22 pF, 50 V keramische condensatoren

2x 100 nF, 50 V keramische condensatoren

2x 330 Ohm weerstanden (R1 en R2)

1x 10 kOhm weerstand (R3)

2x LED's naar keuze (LED1 en LED2)

1x drukknop

Optionele 2x 6-pins header en 3x 8-pins header

1x PP3-type batterij snap

1x 9 V PP3-type batterij

1x FTDI-programmeeradapter

Stap 1: 7805 lineaire spanningsregelaar

7805 Lineaire spanningsregelaar
7805 Lineaire spanningsregelaar
7805 Lineaire spanningsregelaar
7805 Lineaire spanningsregelaar
7805 Lineaire spanningsregelaar
7805 Lineaire spanningsregelaar

Een lineaire spanningsregelaar bevat een eenvoudig circuit dat de ene spanning in de andere omzet. De 7805-regelaar kan een spanning tussen 7 en 30 volt omzetten naar een vaste 5 volt, met een stroomsterkte tot 1 ampère, wat perfect is voor ons Arduino-bord.

We beginnen met het maken van het voedingscircuit dat een 7805-spanningsregelaar in TO-220-vorm en twee condensatoren van elk 100 μF bevat.

Als je naar de voorkant van de 7805-chip kijkt - de pin aan de linkerkant is voor de ingangsspanning, de middelste pin maakt verbinding met GND en de rechter pin is de 5 V-uitgangsaansluiting. Ik zou aanraden om een koellichaam te plaatsen, want als het circuit maximaal 1 ampère stroom trekt, zal de 7805-chip stil heet zijn (je kunt je vingertop verbranden als je het aanraakt).

Plaats een condensator van 100 μF tussen de IN van de regelaar en de aarde en een condensator van 100 F op de rechterrail tussen de voeding en de aarde. Je moet voorzichtig zijn - de elektrolytische condensator is gepolariseerd (de zilveren strip op de condensator betekent het aardingsbeen) en moet precies volgens het schema worden geplaatst.

Voeg stroom- en aardingsdraden toe voor waar uw spanningsregelaar zal zijn, en verbind elke rail in het midden en aan de rechterkant van het bord. Op deze manier hebben we 5 Volt voeding van de boven- en onderrails van het breadboard. Daarnaast zullen we een rode LED toevoegen die brandt wanneer de stroom is ingeschakeld, op deze manier kunnen we altijd zien wanneer ons bord is ingeschakeld.

Een LED is een diode en laat elektrische stroom maar in één richting door. Elektriciteit moet in het lange been en uit het korte been stromen. De kathode van de LED's heeft ook een enigszins afgeplatte zijde, die overeenkomt met het korte, negatieve been van de LED.

Ons circuit heeft een voeding van 5 volt en een rode LED heeft een vermogen van ongeveer 1,5 - 2 volt. Om de spanning te verminderen, moeten we de weerstand in serie schakelen met de LED, waardoor de hoeveelheid elektriciteit die stroomt wordt beperkt om vernietiging van de LED te voorkomen. Een deel van de spanning zal door de weerstand worden opgebruikt en slechts een geschikt deel ervan wordt over de LED aangelegd. Steek de weerstand tussen het korte been van de LED en de rij met de zwarte draad aan de rechterkant van de chip (GND).

De rode en zwarte draad links van de spanningsregelaar is waar je voeding op wordt aangesloten. De rode draad is voor de POWER en de zwarte draad is voor de aarde (GND).

OPMERKING: U kunt alleen een voeding aansluiten tussen 7-16V. Lager en je krijgt geen 5V uit je regelaar, en een hogere spanning van 17 V zal je chip beschadigen. Een 9V batterij, 9V DC voeding of 12V DC voeding is geschikt.

En voor wat meer geavanceerde schakelingen kun je een spanningsregelaar plaatsen met regelbare spanning. Op deze manier kunt u een aantal 3,3 V-sensoren aan het bord toevoegen of een 9 V DC-motor van stroom voorzien.

Meer over lineaire spanningsregelaars -

www.instructables.com/id/Introduction-to-Linear-Voltage-Regulators

Stap 2: ATmega328P-PU-microcontroller

ATmega328P-PU-microcontroller
ATmega328P-PU-microcontroller
ATmega328P-PU-microcontroller
ATmega328P-PU-microcontroller
ATmega328P-PU-microcontroller
ATmega328P-PU-microcontroller

Om een Arduino op het breadboard te bouwen heb je een ATmega328P-PU microcontroller nodig, het brein van ons zelfgemaakte Arduino-board. Plaats het zoals weergegeven in het schema en wees voorzichtig - de poten kunnen breken als u ze erin forceert, of u kunt een 28-pins IC-socket gebruiken. IC moet worden geplaatst met een maanvorm die links van het breadboard is uitgesneden (pinnen zijn genummerd van 1 tot 28 tegen de klok in).

OPMERKING: Niet alle ATmega-IC's bevatten de Arduino-bootloader (de software waarmee het schetsen kan interpreteren die voor een Arduino zijn geschreven). Als je op zoek bent naar een microcontroller voor je zelfgemaakte Arduino, zorg er dan voor dat je er een selecteert die al de bootloader bevat.

Hier een beetje microcontroller-theorie

Een microcontroller is een kleine computer met een processor die instructies uitvoert. Het heeft verschillende soorten geheugen om gegevens en instructies van ons programma (schets) op te slaan; ATmega328P-PU heeft drie soorten geheugen: 32 kB ISP (in-system programming) flash-geheugen waarin schetsen worden opgeslagen, 1 kB EEPROM (elektrisch wisbaar programmeerbaar alleen-lezen geheugen) voor langdurige gegevensopslag en 2 kB SRAM (statisch willekeurig toegankelijk geheugen) voor het opslaan van variabelen wanneer een schets wordt uitgevoerd.

OPMERKING: Het is belangrijk om te weten dat de gegevens in het flashgeheugen en de EEPROM behouden blijven wanneer de stroomtoevoer naar de microcontroller wordt verwijderd.

De microcontroller heeft 13 digitale GPIO-lijnen (voor algemene doeleinden) en zes 10-bits (waarden tussen 0 en 1023) analoog naar de digitale converter (ADC) GPIO-lijnen om de spanning op een pin om te zetten in een digitale waarde. Er zijn drie timers met twee 8-bit timers met waarden tussen 0 en 255, en een 16-bit timer met waarden tussen 0 en 65535, die worden gebruikt door de delay()-functie in een schets of door pulsbreedtemodulatie (PWM).

Er zijn vijf door de software selecteerbare energiebesparende modi en de microcontroller werkt tussen 1,8 V en 5,5 V. U kunt de afbeelding gebruiken als referentie voor de pinlay-out van de ATmega328P-PU.

Er zijn drie groepen poorten: PB, PC en PD met respectievelijk 8, 7 en 8 pinnen, plus twee aardingspinnen (GND), een 5V-pin (VCC) met voedingsspanning (AVCC) en analoge referentiespanning (AREF) pinnen voor de analoog-naar-digitaalomzetter (ADC).

Stap 3: ATmega328P-PU Interconnectie

ATmega328P-PU Interconnectie
ATmega328P-PU Interconnectie

Na het plaatsen van IC, sluit pinnen 7, 20 en 21 van de ATmega aan op de positieve stroomrail op het breadboard, en pinnen 8 en 23 op de negatieve stroomrails, gebruik jumperdraden om de positieve en GND stroomrails aan weerszijden van de bord, zoals weergegeven in de afbeelding.

Pin 7 - Vcc - Digitale voedingsspanning

Pin 8 - GND

Pin 22 - GND

Pin 21 - AREF - Analoge referentiepin voor ADC

Pin 20 - AVcc - Voedingsspanning voor de ADC-converter. Moet op stroom worden aangesloten als ADC niet wordt gebruikt, zoals in ons voorbeeld. Als je het in de toekomst wilt gebruiken, moet het worden gevoed via een laagdoorlaatfilter (om ruis te verminderen).

Plaats daarna een veertien-weg header-pin - het zal vergelijkbaar zijn met de Arduino GPIO's.

Stap 4: Reset-knop

Reset knop
Reset knop
Reset knop
Reset knop

Voeg de kleine tactiele schakelaar toe zodat je de Arduino kunt resetten en de chip kunt voorbereiden op het uploaden van een nieuw programma. Een korte kortstondige druk op deze schakelaar zal de chip resetten.

We zullen de resetknop in ons circuit plaatsen zoals weergegeven in de afbeelding, wanneer we erop drukken, wordt het elektrische circuit ingekort tot de GND, waarbij een weerstand van 1 kOhm wordt omzeild en de ATmega-pin 1 op de GND wordt aangesloten. Voeg vervolgens een draad toe van het linkeronderbeen van de schakelaar naar de RESET-pin van de ATmega-chip en een draad van het linkerbovenbeen van de schakelaar naar de grond.

Voeg bovendien een 10 k Ohm pull-up-weerstand toe aan +5V vanaf de RESET-pin om te voorkomen dat de chip zichzelf reset tijdens normaal bedrijf. Deze weerstand wordt aangesloten op de 5 volt voeding, waardoor Pin 1 naar 5 volt wordt 'opgetrokken'. En als je Pin 1 zonder weerstand op 0V aansluit, start de chip opnieuw op. Zoek op de reboot-microcontroller naar een nieuw programma dat wordt geüpload (bij het opstarten als er niets nieuws wordt verzonden, wordt het laatst verzonden programma uitgevoerd).

De weerstand heeft een vierkleurige streep. Als we Bruin=1, Zwart=0, Oranje=3 lezen, krijgen we het getal 103. De weerstand in Ohm begint '10' met 3 nullen na - 10.000 Ohm of 10 kilo Ohm, en de gouden streep is de tolerantie (5 %).

Om ons circuit te upgraden, kunnen we een 'ontkoppelcondensator' plaatsen. Plaats een 100 nF (nano Farad) keramische condensator. Het is een kleine schijf met twee draden met '104-markering' en dit type condensator is niet gepolariseerd en kan in elke richting worden geplaatst.

Deze 'ontkoppelings'-condensator dempt elektrische pieken, zodat het herstartsignaal dat naar pin 1 wordt gestuurd, betrouwbaar wordt gedetecteerd. De cijfers 104 tonen de capaciteit in pico Farad in wetenschappelijke notatie. Het laatste cijfer '4' vertelt ons hoeveel nullen we moeten optellen. De capaciteit begint met '10' en gaat dan verder met nog eens 4 nullen - 100.000 pico Farads, en aangezien 1000 pico Farads 1 nano Farads is, zijn er 100 nano Farads (104).

Plaats de condensator tussen het linker bovenbeen van de chip (pin 1, tegen de klok in vanaf de halvemaanvorm)

Stap 5: Kristaloscillator

Kristaloscillator
Kristaloscillator
Kristaloscillator
Kristaloscillator

Nu gaan we de klok maken voor de IC. Het is een 16 Mhz quartz en twee keramische condensatoren 22pF (piko Farad) elk. De kristaloscillator creëert een elektrisch signaal met een zeer nauwkeurige frequentie. In dit geval is de frequentie 16 MHz, wat betekent dat de microcontroller 16 miljoen processorinstructies per seconde kan uitvoeren.

Het 16 MHz-kristal (figuur) stelt de Arduino in staat om de tijd te berekenen en de condensatoren dienen om de voedingsspanning af te vlakken.

De kwartskristalpoten zijn allebei hetzelfde - je kunt hem niet naar achteren bedraden. Sluit een been van het kristal aan op pin 9 op de ATmega-chip en het andere been op pin 10. Sluit de benen van een van de 22 pF schijfcondensatoren aan op pin 9 en GND, en een andere schijfcondensator op pin 10 en GND, zoals getoond in figuur.

Opmerking: schijfcondensatoren zijn niet-gepolariseerd en kunnen op elke manier worden geplaatst.

Het is de moeite waard om te vermelden dat de draadlengtes tussen de 22pF-condensatoren even lang moeten zijn en zo dicht mogelijk bij de controller moeten zijn om interactie met andere delen van de circuits te voorkomen.

Stap 6: LED toevoegen aan pin 13

LED toevoegen aan pin 13
LED toevoegen aan pin 13
LED toevoegen aan pin 13
LED toevoegen aan pin 13
LED toevoegen aan pin 13
LED toevoegen aan pin 13

Nu voegen we de groene LED toe (digitale pin 13 op Arduino).

Steek een LED's lange poot in de rij onder de rode draad (aan de rechterkant van de chip - power, of 5 Volt) en de korte poot in de eerste lege rij onder de microcontroller.

Deze weerstand van 330 Ohm is in serie geschakeld met de LED, waardoor de hoeveelheid stroom die stroomt wordt beperkt om vernietiging van de LED's te voorkomen.

Plaats de weerstand tussen het korte been van de LED en de rij met de zwarte draad aan de rechterkant van de chip (GND of 0Volt)

Alle analoge, digitale en andere pinnen die beschikbaar zijn op het normale Arduino-bord, zijn ook beschikbaar in onze breadboard-versie. U kunt het ATmega-schema en de pintabel als referentie gebruiken.

Stap 7: USB naar seriële connector

USB naar seriële connector
USB naar seriële connector
USB naar seriële connector
USB naar seriële connector
USB naar seriële connector
USB naar seriële connector
USB naar seriële connector
USB naar seriële connector

De ATmega 328P-PU microcontroller biedt drie communicatiemodi: een serieel programmeerbare USART (universele synchrone en asynchrone ontvanger-zender), een SPI (Serial Peripheral Interface) seriële poort en een tweedraads seriële interface. USART neemt bytes aan gegevens en verzendt de afzonderlijke bits opeenvolgend, waarvoor communicatielijnen voor zenden (TX) en ontvangen (RX) nodig zijn. SPI gebruikt vier communicatielijnen: master-out slave-in (MOSI), master-in slave-out (MISO) en seriële klok (SCK) met een aparte slave select (SS) lijn voor elk apparaat. De I2C-communicatie Two Wire Interface (TWI)-bus gebruikt twee signaallijnen: seriële data (SDA) en seriële klok (SCL).

Om ons bord met Arduino IDE op de pc aan te sluiten voor het downloaden van een schets, gebruiken we een USB naar seriële UART-interface zoals de FT232R FTDI.

Let er bij aanschaf van een FTDI-kabel op dat dit het 5 V-model is, want het 3,3 V-model zal niet goed werken. Deze kabel (getoond in de afbeelding) heeft een USB-stekker aan het ene uiteinde en een aansluiting met zes draden aan het andere.

Zorg er bij het aansluiten van de kabel voor dat de zijkant van de aansluiting met de zwarte draad wordt aangesloten op de GND-pin op de headerpinnen van het breadboard. Zodra de kabel is aangesloten, levert deze ook stroom aan het circuit, net zoals een normaal Arduino-bord zou doen.

Dan verbinden we onze FTDI met ons zelfgemaakte Arduino-bord; ter referentie kunt u de tabel en het schema gebruiken.

Een 0,1 μF elektrolytische condensator is aangesloten tussen de DTR (Data Terminal Ready) pin op de USB naar seriële UART-interface en de microcontroller Reset, die de microcontroller reset om te synchroniseren met de USB naar de seriële interface.

OPMERKING: Een slim onderdeel is dat de RX-pin van de microcontroller moet worden aangesloten op de TX van de USB naar de seriële adapter en hetzelfde met de TX van het ene apparaat naar de RX van het andere.

De CTS-pin (Clear to Send) op de USB naar de seriële UART-interface is niet verbonden met de microcontroller.

Om een schets naar de microcontroller in de Arduino IDE te downloaden, selecteert u vanuit het menu Tools ➤ Port de relevante communicatiepoort (COM) en selecteert u in het menu Tools ➤ Board Arduino/Genuino Uno. De schets wordt gecompileerd in de Arduino IDE en vervolgens geladen in de microcontroller met de USB naar de seriële UART-interface. Wanneer de schets is gedownload, knipperen de groene en rode LED's van de USB-naar-serieel UART-interface TXD en RXD.

De USB naar seriële UART-interface kan worden verwijderd en er kan een 5V-voeding op de microcontroller worden aangesloten. Een LED en 220kΩ-weerstand zijn aangesloten op de microcontroller-pin 19, gelijk aan Arduino-pin 13, om de knipperschets uit te voeren.

Stap 8: Sketch uploaden of de Bootloader installeren

Sketch uploaden of Bootloader installeren
Sketch uploaden of Bootloader installeren
Sketch uploaden of Bootloader installeren
Sketch uploaden of Bootloader installeren

Als je geen USB-naar-serieel-converter hebt, kun je een andere Arduino (in mijn geval Arduino UNO) gebruiken om een schets of bootloader naar het zelfgemaakte bord te uploaden.

De ATmega238P-PU-microcontrollers hebben een bootloader nodig voor het uploaden en uitvoeren van schetsen vanuit de Arduino IDE; wanneer de microcontroller van stroom wordt voorzien, bepaalt de bootloader of een nieuwe schets wordt geüpload en laadt de schets vervolgens in het geheugen van de microcontroller. Als je de ATmega328P-PU zonder bootloader hebt, dan kun je de bootloader uploaden met SPI-communicatie tussen twee boards.

Hier ziet u hoe u een bootloader uploadt naar de ATmega IC.

Laten we eerst beginnen met het configureren van onze Arduino UNO als ISP, dit wordt gedaan omdat je wilt dat de Arduino UNO de schets uploadt naar de ATmega IC en niet naar zichzelf.

Stap 1: Onze Arduino UNO configureren als ISP

Sluit de ATmega IC niet aan terwijl de onderstaande upload wordt uitgevoerd.

  • Sluit de arduino aan op een pc
  • Open de arduino IDE
  • Selecteer het juiste bord (Extra > Bord > Arduino UNO) en COM-poort (Extra > Poort > COM?)
  • Open > Voorbeelden > ArduinoISP
  • Schets uploaden

Daarna kun je je eigen Board aansluiten op de Arduino UNO door het circuit te volgen zoals aangegeven op het schema. In dit stadium is het niet nodig om je eigen bord van stroom te voorzien, omdat de Arduino de nodige stroom zou leveren.

Stap 2: Een schets of bootloader uploaden

Met alles aangesloten open je de IDE vanuit de map die je zojuist hebt gemaakt (de kopie).

  • Selecteer Arduino328 uit Extra > Bord
  • Selecteer Arduino als ISP van Tools > Programmer
  • Selecteer Burn Bootloader

Na een succesvolle brandwond zou u een "Klaar met brandende bootloader" krijgen.

De bootloader wordt nu op de microcontroller geladen, die klaar is om een schets te ontvangen na het wijzigen van de COM-poort in het menu Tools ➤ Port.

Aanbevolen: