Indholdsfortegnelse:

Arduino 2-i-1 Model Train Controller: 4 trin
Arduino 2-i-1 Model Train Controller: 4 trin

Video: Arduino 2-i-1 Model Train Controller: 4 trin

Video: Arduino 2-i-1 Model Train Controller: 4 trin
Video: I Made an Automated Model Train With An Arduino! 2024, Juli
Anonim
Arduino 2-i-1 model togkontroller
Arduino 2-i-1 model togkontroller

For fyrre år siden designede jeg en op-amp-baseret modeltoggas for et par venner, og derefter for cirka fire år siden genskabte jeg det ved hjælp af en PIC-mikrokontroller. Dette Arduino -projekt genskaber PIC -versionen, men tilføjer også muligheden for at bruge en Bluetooth -forbindelse i stedet for de manuelle kontakter til gas-, bremse- og retningskontrollen. Mens det design, jeg præsenterer her, er målrettet til en 12 volt model jernbanemotor, kan det let ændres til en række andre DC -motorstyringsapplikationer.

Trin 1: Pulse Width Modulation (PWM)

Pulse Width Modulation (PWM)
Pulse Width Modulation (PWM)

For dem af jer, der ikke er bekendt med PWM, er det ikke så skræmmende, som det lyder. Alt det virkelig betyder for vores simple motorstyringsapplikation er, at vi genererer en firkantbølge med en eller anden frekvens, og derefter ændrer vi driftscyklussen. Arbejdscyklus er defineret som forholdet mellem tid, output er en logisk høj i forhold til bølgeformperioden. Du kan se det ganske tydeligt i diagrammet ovenfor med den øverste bølgeform ved 10% driftscyklus, den midterste bølgeform ved 50% driftscyklus og den nederste bølgeform ved 90% driftscyklus. Den stiplede linje overlejret på hver bølgeform repræsenterer den ækvivalente jævnspænding set af motoren. I betragtning af at Arduino har en indbygget PWM -kapacitet, er det virkelig ret enkelt at generere denne type DC -motorstyring. En anden fordel ved at bruge PWM er, at det hjælper med at holde motoren fra den stikkende opstart, der kan ske, når man bruger lige DC. En ulempe ved PWM er, at der undertiden høres en lyd fra motoren ved frekvensen af PWM.

Trin 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Det første billede viser Arduino -forbindelserne til kontakterne og LM298 -motordrivermodulet. Der er svage pull-up-modstande internt i Arduino, så der er ikke brug for pull-up-modstande til kontakterne. Retningsomskifteren er en simpel SPST -switch (enkeltpolet enkeltkast). Gass- og bremsekontakterne vises som normalt åbne, kortvarige kontaktknapper.

Det andet billede viser Arduino -forbindelserne til Bluetooth -modulet og LM298 -motordrivermodulet. Bluetooth TXD -udgangen tilsluttes direkte til Arduino RX seriel indgang.

Det tredje billede er et L298N dobbelt H-bro modul. LM298 -modulet har en indbygget 5 volt regulator, der kan aktiveres af en jumper. Vi har brug for +5 volt til Arduino og Bluetooth, men vi vil have +12 volt til at drive motoren. I dette tilfælde anvender vi +12 volt til " +12V effekt" -indgangen på L298N, og vi lader "5V aktiverings" jumperen være på plads. Dette gør det muligt for 5-volts regulatoren at sende til "+5 strøm" -forbindelsen på modulet. Tilslut det til Arduino og Bluetooth. Glem ikke at slutte jordledningerne til +12 input og +5 output til modulet "power GND".

Vi vil have udgangsspændingen til motoren til at variere baseret på PWM genereret af Arduino i stedet for bare at være fuld til eller fra. For at gøre det fjerner vi jumperne fra "ENA" og "ENB" og tilslutter vores Arduino PWM -udgang til "ENA" på modulet. Husk, at den faktiske aktiveringsnål er den, der er tættest på brættets kant (ved siden af "input" -stifterne). Bagstiften for hver aktivering er +5 volt, så vi vil sikre os, at vi ikke opretter forbindelse til det.

“IN1” og “IN2” benene på modulet er forbundet til de respektive Arduino ben. Disse ben styrer motorretningen, og ja, der er en god grund til at lade Arduino styre dem i stedet for blot at tilslutte en switch til modulet. Vi vil se hvorfor i softwarediskussionen.

Trin 3: Bluetooth -modul

Bluetooth -modul
Bluetooth -modul

Billedet her er typisk for de tilgængelige Bluetooth -moduler. Når du leder efter en at købe, kan du søge på udtrykkene "HC-05" og HC-06 ". Forskellene mellem de to er i firmwaren og normalt i antallet af ben på kortet. Billedet ovenfor er af et HC-06-modul og leveres med forenklet firmware, der kun tillader meget grundlæggende konfiguration. Det er også indstillet som en Bluetooth -enhed, der kun er "slave". Enkelt sagt betyder det, at den kun kan reagere på kommandoer fra en "Master" -enhed og ikke kan udstede kommandoer alene. HC-05 modulet har flere konfigurationsmuligheder og kan indstilles som enten en "Master" eller en "Slave" enhed. HC-05 har normalt seks ben i stedet for kun de fire viste ovenfor for HC-06. Statens pin er ikke rigtig vigtig, men nøglepinden (undertiden går under andre navne som "EN") er påkrævet, hvis du vil foretage en konfiguration. Generelt behøver modulerne ingen konfiguration, hvis du er ok med standard baudhastigheden på 9600 og er ligeglad med at give modulet et specifikt navn. Jeg har flere projekter, hvor jeg bruger disse, så jeg vil gerne navngive dem i overensstemmelse hermed.

Konfiguration af Bluetooth-modulerne kræver, at du enten køber eller bygger et interface til en RS-232 seriel port eller til en USB-port. Jeg vil ikke dække, hvordan man bygger en i dette indlæg, men du burde kunne finde oplysninger på nettet. Eller bare køb en grænseflade. Konfigurationskommandoer bruger AT -kommandoer på samme måde som dem, der blev brugt i gamle dage med telefonmodemer. Jeg har vedhæftet en brugermanual her, der indeholder AT -kommandoer for hver modultype. En ting at bemærke er, at HC-06 kræver UPPERCASE-kommandoer, og kommandostrengen skal udfyldes inden for 1 sekund. Det betyder, at nogle af de længere strenge for ting som f.eks. Ændring af baudhastigheder skal klippes og indsættes i dit terminalprogram, eller du skal konfigurere tekstfiler, der skal sendes. OVERSTANDSKRAV er kun, hvis du forsøger at sende konfigurationskommandoer. Regelmæssig kommunikationstilstand kan acceptere alle 8-bits data.

Trin 4: Software

Softwaren er ret enkel til både den manuelle version og Bluetooth -versionen. For at vælge Bluetooth -versionen skal du blot kommentere "#define BT_Ctrl" -erklæringen.

Da jeg skrev PIC-koden eksperimenterede jeg med PWM-frekvensen og besluttede mig til sidst på 500 Hz. Jeg opdagede, at hvis frekvensen var for høj, var LM298N -modulet ikke i stand til at reagere hurtigt nok på impulserne. Det betød, at spændingsudgangen ikke var lineær og kunne tage store spring. Arduino har indbyggede PWM -kommandoer, men de giver dig kun mulighed for at variere driftscyklussen og ikke frekvensen. Heldigvis er frekvensen omkring 490 Hz, så det er tæt nok på de 500 Hz, jeg brugte på PIC.

En af "træk" ved togdrossel er en følelse af momentum for acceleration og bremsning for at simulere, hvordan et rigtigt tog fungerer. For at opnå dette indsættes en simpel tidsforsinkelse i sløjfen for den manuelle version af softwaren. Med den viste værdi tager det cirka 13 sekunder at gå fra 0 til 12 volt eller fra 12 volt tilbage til nul. Forsinkelsen kan let ændres i længere eller kortere tider. Det eneste tilfælde, hvor momentum ikke er i kraft, er når retningskontakten ændres. Af beskyttelsesformål indstilles PWM -driftscyklussen straks til 0%, når denne switch ændres. Det gør faktisk, at retningskontakten også fungerer som en nødbremse.

For at sikre øjeblikkelig håndtering af retningskontakten satte jeg koden i en afbrydelseshåndterer. Det giver os også mulighed for at bruge funktionen "afbryd ved ændring", så det er ligegyldigt, om ændringen er fra lav til høj eller høj til lav.

Bluetooth -versionen af softwaren bruger kommandoer med enkelt bogstav til at starte funktionerne Fremad, Baglæns, Bremse og Gashåndtag. Faktisk erstatter de modtagne kommandoer de manuelle kontakter, men forårsager de samme svar. Den app, jeg bruger til Bluetooth -kontrol, kaldes "Bluetooth Serial Controller" af Next Prototypes. Det lader dig konfigurere et virtuelt tastatur og angive dine egne kommandostrenge og navne for hver tast. Det giver dig også mulighed for at indstille en gentagelseshastighed, så jeg indstillede bremse- og gashåndtagsknapperne til 50 ms for at give omkring 14 sekunders momentum. Jeg deaktiverede gentagelsesfunktionen for knapperne Frem og Tilbage.

Det er det for dette indlæg. Tjek mine andre instruktioner. Hvis du er interesseret i PIC -mikrokontrollerprojekter, kan du besøge mit websted på www.boomerrules.wordpress.com

Anbefalede: