INHOUDSOPGAWE:

Arduino 2-in-1 modeltreinbeheerder: 4 stappe
Arduino 2-in-1 modeltreinbeheerder: 4 stappe

Video: Arduino 2-in-1 modeltreinbeheerder: 4 stappe

Video: Arduino 2-in-1 modeltreinbeheerder: 4 stappe
Video: How to use 4 channel Relay to control AC load with Arduino code 2024, Julie
Anonim
Arduino 2-in-1 modeltreinbeheerder
Arduino 2-in-1 modeltreinbeheerder

Veertig jaar gelede het ek 'n op-amp-gebaseerde treintoestel vir 'n paar vriende ontwerp, en ongeveer vier jaar gelede het ek dit herskep met 'n PIC-mikrobeheerder. Hierdie Arduino -projek herskep die PIC -weergawe, maar voeg ook die moontlikheid toe om 'n Bluetooth -verbinding te gebruik in plaas van die handskakelaars vir die gas-, rem- en rigtingbeheer. Alhoewel die ontwerp wat ek hier aanbied, gerig is op 'n spoorwegmotor van 12 volt, kan dit maklik aangepas word vir 'n verskeidenheid ander DC -motorbeheer -toepassings.

Stap 1: Pulse Width Modulation (PWM)

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

Vir diegene wat nie vertroud is met PWM nie, is dit nie so eng soos dit klink nie. Al wat dit regtig beteken vir ons eenvoudige motorbeheer -toepassing, is dat ons 'n vierkantige golf met 'n frekwensie genereer, en dan verander ons die dienssiklus. Pligsiklus word gedefinieer as die verhouding van tyd wat die uitset 'n logiese hoogtepunt is in vergelyking met die golfvormperiode. U kan dit duidelik sien in die diagram hierbo met die boonste golfvorm by 'n 10% -siklus, die middelste golfvorm by 'n 50% -siklus en die onderste golfvorm by 'n 90% -siklus. Die stippellyn wat oor elke golfvorm gelê is, verteenwoordig die ekwivalente gelykstroomspanning wat die motor sien. Aangesien die Arduino 'n ingeboude PWM -vermoë het, is dit redelik eenvoudig om hierdie tipe DC -motorbeheer te genereer. 'N Ander voordeel van die gebruik van PWM is dat dit help om die motor te weerhou van die opwinding wat kan plaasvind as u reguit DC gebruik. Een nadeel van PWM is dat daar soms 'n hoorbare geluid van die motor is op die frekwensie van die PWM.

Stap 2: Hardeware

Hardeware
Hardeware
Hardeware
Hardeware
Hardeware
Hardeware

Die eerste foto toon die Arduino -verbindings vir die skakelaars en die LM298 -motorbestuurdermodule. Daar is swak optrekweerstande in die Arduino, dus is daar geen optrekweerstand nodig vir die skakelaars nie. Die rigtingskakelaar is 'n eenvoudige SPST -skakelaar (enkelpolige enkele gooi). Die gasklep- en remskakelaars word getoon as normaalweg oop, kortstondige drukknoppies.

Die tweede prentjie toon die Arduino -verbindings vir die Bluetooth -module en die LM298 -motorbestuurdermodule. Die Bluetooth TXD -uitgang maak direk verbinding met die Arduino RX -reeksinvoer.

Die derde prentjie is 'n L298N dubbele H-brug module. Die LM298 -module het 'n ingeboude 5 volt -reguleerder wat deur 'n springer geaktiveer kan word. Ons benodig +5 volt vir die Arduino en Bluetooth, maar ons wil hê dat +12 volt die motor moet aandryf. In hierdie geval pas ons die +12 volt toe op die " +12V krag" -ingang van die L298N en laat ons die "5V enable" springer in plek. Dit laat die 5-volt-reguleerder toe na die "+5 krag" -aansluiting op die module. Koppel dit aan die Arduino en die Bluetooth. Moenie vergeet om die aarddrade vir die +12 -ingang en die +5 -uitgang aan die module "power GND" te koppel nie.

Ons wil hê dat die uitgangsspanning na die motor moet wissel, gebaseer op die PWM wat deur die Arduino gegenereer word, in plaas daarvan om net vol aan of uit te wees. Om dit te doen, verwyder ons die springers van "ENA" en "ENB" en koppel ons Arduino PWM -uitgang aan "ENA" op die module. Hou in gedagte dat die werklike aktiveringspen die een is wat die naaste aan die rand van die bord is (langs die "invoer" penne). Die agterste pen vir elke skakelaar is +5 volt, so ons wil seker maak dat ons nie daarby aansluit nie.

Die "IN1" en "IN2" penne op die module is gekoppel aan die onderskeie Arduino penne. Die penne beheer die motorrigting, en ja, daar is 'n goeie rede om die Arduino dit te laat beheer in plaas van net 'n skakelaar aan die module te koppel. Ons sal sien hoekom in die sagteware -bespreking.

Stap 3: Bluetooth -module

Bluetooth -module
Bluetooth -module

Die prentjie wat hier getoon word, is tipies van die beskikbare Bluetooth -modules. As u op soek is na een om te koop, kan u soek op die terme "HC-05" en HC-06 ". Die verskille tussen die twee is in die firmware en gewoonlik in die aantal penne op die bord. Die foto hierbo is van 'n HC-06-module en het 'n vereenvoudigde firmware wat slegs 'n baie basiese opset moontlik maak. Dit is ook ingestel op 'n Bluetooth -toestel met slegs 'slaaf'. In eenvoudige terme beteken dit dat dit slegs op bevele van 'n 'Master' -toestel kan reageer en nie opdragte self kan uitreik nie. Die HC-05-module het meer konfigurasiemoontlikhede en kan as 'n "Master" of "Slave" toestel ingestel word. Die HC-05 het gewoonlik ses penne in plaas van net die vier hierbo vir die HC-06. Die staatspen is nie regtig belangrik nie, maar die sleutelpen (soms onder ander name soos "EN") is nodig as u enige opset wil doen. Oor die algemeen het die modules geen konfigurasie nodig as u in orde is met die standaard baud -tempo van 9600 en u nie omgee om 'n spesifieke naam aan die module te gee nie. Ek het verskeie projekte waar ek dit gebruik, so ek noem dit graag daarvolgens.

Om die Bluetooth-modules te konfigureer, moet u 'n koppelvlak na 'n RS-232-seriële poort of 'n USB-poort koop of bou. Ek sal nie in hierdie pos bespreek hoe om een te bou nie, maar u moet inligting op die internet kan vind. Of koop net 'n koppelvlak. Die opsetopdragte gebruik AT -opdragte, soortgelyk aan wat in die ou dae met telefoonmodems gebruik is. Ek het 'n gebruikershandleiding hierby aangeheg wat die AT -opdragte vir elke modulesoort bevat. Een ding om op te let is dat die HC-06 UPPERCASE-opdragte vereis en die opdragstring binne 1 sekonde moet voltooi. Dit beteken dat sommige van die langer snare vir dinge soos die verandering van baud -tariewe in u terminale program moet sny en plak, of dat u tekslêers moet opstel om te stuur. Die UPPERCASE -vereiste is slegs as u opsetopdragte wil stuur. Gereelde kommunikasiemodus kan enige 8-bisse data aanvaar.

Stap 4: sagteware

Die sagteware is redelik eenvoudig vir beide die handmatige weergawe en die Bluetooth -weergawe. Om die Bluetooth -weergawe te kies, moet u die opmerking "#define BT_Ctrl" verklaar.

Toe ek die PIC-kode skryf, eksperimenteer ek met die PWM-frekwensie en besluit uiteindelik op 500 Hz. Ek het ontdek dat as die frekwensie te hoog was, die LM298N -module nie vinnig genoeg op die polse kon reageer nie. Dit het beteken dat die spanningsuitset nie lineêr was nie en groot spronge kon neem. Die Arduino het ingeboude PWM -opdragte, maar u kan slegs die dienssiklus verander en nie die frekwensie nie. Gelukkig is die frekwensie ongeveer 490 Hz, so dit is naby genoeg aan die 500 Hz wat ek op die PIC gebruik het.

Een van die 'kenmerke' van treingas is 'n gevoel van momentum vir versnelling en rem om te simuleer hoe 'n regte trein werk. Om dit te bereik, word 'n eenvoudige tydsvertraging in die lus vir die handmatige weergawe van die sagteware ingevoeg. Met die getoonde waarde, neem dit ongeveer 13 sekondes om van 0 tot 12 volt of van 12 volt terug te gaan na nul. Die vertraging kan maklik aangepas word vir langer of korter tye. Die enigste geval waar momentum nie van krag is nie, is wanneer die rigtingskakelaar verander word. Ter beskerming word die PWM -dienssiklus onmiddellik op 0% gestel wanneer hierdie skakelaar verander word. Dit maak die rigtingskakelaar in werklikheid ook 'n noodrem.

Om onmiddellike hantering van die rigtingskakelaar te verseker, plaas ek die kode in 'n onderbrekingshanteerder. Dit stel ons ook in staat om die funksie 'onderbreek by verandering' te gebruik, sodat dit nie saak maak of die verandering van laag na hoog of hoog na laag is nie.

Die Bluetooth -weergawe van die sagteware gebruik opdragte met een letter om die funksies vorentoe, agteruit, rem en gashendel te begin. In werklikheid vervang die ontvangde opdragte die handskakelaars, maar veroorsaak dieselfde reaksies. Die app wat ek vir Bluetooth -beheer gebruik, word deur Next Prototypes 'Bluetooth Serial Controller' genoem. Hiermee kan u 'n virtuele toetsbord instel en u eie opdragstringe en name vir elke sleutel instel. Dit stel u ook in staat om 'n herhalingsnelheid in te stel, sodat ek die rem- en gasknoppies op 50ms stel om ongeveer 14 sekondes momentum te gee. Ek het die herhaalfunksie vir die knoppies vorentoe en agteruit gedeaktiveer.

Dit is dit vir hierdie pos. Kyk na my ander instruksies. As u belangstel in PIC -mikrobeheerprojekte, besoek my webwerf by www.boomerrules.wordpress.com

Aanbeveel: