Innholdsfortegnelse:

Arduino 2-i-1 modelltogkontroller: 4 trinn
Arduino 2-i-1 modelltogkontroller: 4 trinn

Video: Arduino 2-i-1 modelltogkontroller: 4 trinn

Video: Arduino 2-i-1 modelltogkontroller: 4 trinn
Video: Обзор новой среды разработки Arduino IDE 2.0 2024, November
Anonim
Arduino 2-i-1 modelltogkontroller
Arduino 2-i-1 modelltogkontroller

For førti år siden designet jeg en op-amp-basert modelltog for et par venner, og for omtrent fire år siden gjenskapte jeg den ved hjelp av en PIC-mikrokontroller. Dette Arduino -prosjektet gjenskaper PIC -versjonen, men legger også til muligheten til å bruke en Bluetooth -tilkobling i stedet for de manuelle bryterne for gass-, bremse- og retningskontroll. Selv om designet jeg presenterer her er rettet mot en 12 volt modell jernbanemotor, kan den enkelt endres for en rekke andre DC -motorstyringsapplikasjoner.

Trinn 1: Pulsbreddemodulering (PWM)

Pulsbreddemodulering (PWM)
Pulsbreddemodulering (PWM)

For de av dere som ikke er kjent med PWM, er det ikke så skummelt som det høres ut. Alt det virkelig betyr for vår enkle motorstyringsapplikasjon er at vi genererer en firkantbølge med en viss frekvens, og deretter endrer vi driftssyklusen. Driftssyklus er definert som forholdet mellom tid som utgangen er en logisk høyde sammenlignet med bølgeformperioden. Du kan se det ganske tydelig i diagrammet ovenfor med den øverste bølgeformen ved 10% driftssyklus, den midterste bølgeformen ved 50% driftssyklus og den nederste bølgeformen ved 90% driftssyklus. Den stiplede linjen på hver bølgeform representerer ekvivalent DC -spenning sett av motoren. Gitt at Arduino har en innebygd PWM -funksjon, er det veldig enkelt å generere denne typen DC -motorstyring. En annen fordel med å bruke PWM er at det hjelper til med å holde motoren mot oppstart som kan skje når man bruker rett likestrøm. En ulempe med PWM er at det noen ganger høres en lyd fra motoren ved frekvensen av PWM.

Trinn 2: Maskinvare

Maskinvare
Maskinvare
Maskinvare
Maskinvare
Maskinvare
Maskinvare

Det første bildet viser Arduino -tilkoblingene for bryterne og LM298 -motordrivermodulen. Det er svake pull-up-motstander internt i Arduino, så det er ikke nødvendig med pull-up-motstander for bryterne. Retningsbryteren er en enkel SPST -bryter (enkeltpolet enkeltkast). Gass- og bremsebryterne vises som normalt åpne, øyeblikkelige trykknapper.

Det andre bildet viser Arduino -tilkoblingene for Bluetooth -modulen og LM298 -motordrivermodulen. Bluetooth TXD -utgangen kobles direkte til Arduino RX seriell inngang.

Det tredje bildet er en L298N dual H-bridge-modul. LM298 -modulen har en innebygd 5 volt regulator som kan aktiveres av en jumper. Vi trenger +5 volt for Arduino og Bluetooth, men vi vil ha +12 volt for å drive motoren. I dette tilfellet bruker vi +12 volt på " +12V effekt" -inngangen på L298N, og vi lar "5V aktiver" -hopperen være på plass. Dette gjør at 5-volts regulatoren kan sende ut til "+5 strøm" -tilkoblingen på modulen. Koble den til Arduino og Bluetooth. Ikke glem å koble jordledningene for +12 inngang og +5 utgang til modulen "power GND".

Vi vil at utgangsspenningen til motoren skal variere basert på PWM generert av Arduino i stedet for bare å være full på eller full av. For å gjøre det, fjerner vi hopperne fra “ENA” og “ENB” og kobler vår Arduino PWM -utgang til “ENA” på modulen. Husk at den faktiske aktiveringsnålen er den som er nærmest brettkanten (ved siden av "inngangspinnene"). Ryggpinnen for hver aktivering er +5 volt, så vi vil forsikre oss om at vi ikke kobler til det.

"IN1" og "IN2" pinnene på modulen er koblet til de respektive Arduino pinnene. Disse pinnene styrer motorretningen, og ja, det er en god grunn til å la Arduino styre dem i stedet for bare å koble en bryter til modulen. Vi vil se hvorfor i programvarediskusjonen.

Trinn 3: Bluetooth -modul

Bluetooth -modul
Bluetooth -modul

Bildet som er vist her er typisk for tilgjengelige Bluetooth -moduler. Når du leter etter en å kjøpe, kan du søke på begrepene "HC-05" og HC-06 ". Forskjellene mellom de to er i fastvaren og vanligvis i antall pinner på brettet. Bildet ovenfor er av en HC-06-modul og leveres med forenklet fastvare som bare tillater veldig grunnleggende konfigurasjon. Den er også angitt som en Bluetooth -enhet som bare er “slave”. Enkelt sagt betyr det at den bare kan svare på kommandoer fra en "Master" -enhet og ikke kan utstede kommandoer alene. HC-05-modulen har flere konfigurasjonsmuligheter og kan settes som enten en "Master" eller en "Slave" enhet. HC-05 har vanligvis seks pinner i stedet for bare de fire som er vist ovenfor for HC-06. Statens pin er egentlig ikke viktig, men nøkkelpinnen (noen ganger går under andre navn som "EN") er påkrevd hvis du vil gjøre noen konfigurasjon. Vanligvis trenger modulene ingen konfigurasjon hvis du er ok med standard overføringshastighet på 9600 og ikke bryr deg om å gi et bestemt navn til modulen. Jeg har flere prosjekter der jeg bruker disse, så jeg liker å navngi dem deretter.

Konfigurering av Bluetooth-modulene krever at du enten kjøper eller bygger et grensesnitt til en RS-232 seriell port eller til en USB-port. Jeg vil ikke dekke hvordan du bygger en i dette innlegget, men du bør kunne finne informasjon på nettet. Eller bare kjøpe et grensesnitt. Konfigurasjonskommandoene bruker AT -kommandoer omtrent som det som ble brukt i gamle dager med telefonmodemer. Jeg har vedlagt en brukermanual her som inneholder AT -kommandoene for hver modultype. En ting å merke seg er at HC-06 krever UPPERCASE-kommandoer, og kommandostrengen må fullføres innen 1 sekund. Det betyr at noen av de lengre strengene for ting som å endre overføringshastigheter må kuttes og limes inn i terminalprogrammet, eller du må sette opp tekstfiler som skal sendes. HUVUDKRAV er bare hvis du prøver å sende konfigurasjonskommandoer. Vanlig kommunikasjonsmodus kan godta alle 8-bits data.

Trinn 4: Programvare

Programvaren er ganske enkel for både den manuelle versjonen og Bluetooth -versjonen. For å velge Bluetooth -versjonen, bare kommenter "#define BT_Ctrl" -setningen.

Da jeg skrev PIC-koden, eksperimenterte jeg med PWM-frekvensen og bestemte meg til slutt på 500 Hz. Jeg oppdaget at hvis frekvensen var for høy, var ikke LM298N -modulen i stand til å reagere raskt nok på pulser. Det betydde at spenningsutgangen ikke var lineær og kunne ta store hopp. Arduino har innebygde PWM -kommandoer, men de lar deg bare variere driftssyklusen og ikke frekvensen. Heldigvis er frekvensen omtrent 490 Hz, så det er nær nok til 500 Hz jeg brukte på PIC.

En av "egenskapene" til toggass er en følelse av momentum for akselerasjon og bremsing for å simulere hvordan et ekte tog fungerer. For å oppnå det, settes det inn en enkel tidsforsinkelse i løkken for den manuelle versjonen av programvaren. Med verdien vist, tar det omtrent 13 sekunder å gå fra 0 til 12 volt eller fra 12 volt tilbake til null. Forsinkelsen kan enkelt endres for lengre eller kortere tider. Det eneste tilfellet der momentum ikke er i kraft er når retningsbryteren endres. Av beskyttelsesformål settes PWM -driftssyklusen umiddelbart til 0% når denne bryteren endres. Det gjør faktisk at retningsbryteren også fungerer som en nødbrems.

For å sikre umiddelbar håndtering av retningsbryteren satte jeg koden i en avbryterbehandler. Det lar oss også bruke funksjonen "avbryt ved endring", så det spiller ingen rolle om endringen er fra lav til høy eller høy til lav.

Bluetooth -versjonen av programvaren bruker kommandoer med én bokstav for å starte funksjonene Forward, Reverse, Brake og Throttle. Faktisk erstatter de mottatte kommandoene de manuelle bryterne, men forårsaker de samme svarene. Appen jeg bruker til Bluetooth -kontroll kalles "Bluetooth Serial Controller" av Next Prototypes. Den lar deg konfigurere et virtuelt tastatur og angi dine egne kommandostrenger og navn for hver tast. Den lar deg også angi en repetisjonshastighet, så jeg satte bremse- og gass -knappene til 50 ms for å gi omtrent 14 sekunders fart. Jeg deaktiverte repetisjonsfunksjonen for Forward og Reverse -knappene.

Det er det for dette innlegget. Sjekk mine andre instrukser. Hvis du er interessert i PIC -mikrokontrollerprosjekter, sjekk ut nettstedet mitt på www.boomerrules.wordpress.com

Anbefalt: