<< | #324 ; Eĉ iom malforta |
>> |
Apude vi vidas foton de mia malnova helpilo kion mi uzis por unue konatiĝi kun la malgranda unipolar -motoro 28BYJ48
. Certe Arduino Uno estas utila mikroregilo, sed tamen iom maloportuna por uzi se oni ne scias tre bone kion oni faru, sed volas nur iom eksperimenti kaj provi novaj ideoj.
Klare ke Arduino estas ideala por malgrandaj taskoj. Bona celo por preta produktaĵo kio ne postulu superfluaj rimedoj. Ĝi bezonas nur malmulte da elektro, eblas longe peli per baterio. Programado tamen postulas pli da laboro. Libera eksperimentado ne estas kiel eble plej multe oportune. Krome la "pezocentro" de agado nun klare estas en Raspberry Pi (mallongigo RPi).
Mi provizore adiaŭos la mikroregilon, sed mi volas kontinui kun la sama jam iom malnova malgranda fortigilo ULN2003A
por malgrandaj unipolar -motoroj kaj kun Raspberry Pi kaj kelkaj aliaj stepper -motoroj. Estas pli facile por programi kaj eksperimenti per RPi kaj Python.
Mi ja jam antaŭe iom pritraktis malgrandaj stepper -motoroj ekzemple en artikoloj #98 kaj #109 kaj ankaŭ #110.
La fortigilo ULN2003A
klare ne estas tre forta kaj tial mi verŝajne uzos nur baterian tension 3 Voltoj por limigi la kurenton al por la fortigileto sekura nivelo, sub 0,5 amperoj. La motoroj de antaŭaj artikoloj ja tamen fakte funkciis - kvankam tute sen vera ekstera kargo - per tio iom malalta tensio.
La plej granda motoro, "The Big ... öööh ... Sucker" tamen povus esti tro granda ŝarĝo por la eta fortigila cirkvito. La rezistanco de duona bobeno devus esti pli ol 6 Ω por ke kurento restu sub 0,5 Amperoj per la bateria tensio 3 Voltoj. Baza elektra doktrino ja instruas ke estas elektra kurento I = U/R = 3V/6Ω = 0,5 A
Mi ankoraŭ ne povas praktike uzi la fortan FET-fortigilon por unipolar kaj la praktike analogaj bipolar half-coil -motoroj kion mi longe planis kaj sopiris. Do ni unue esploru la eblecojn de tio pli malforta aparateto.
Estis ankaŭ ioma problemo kun la motoro 28BYJ48
kio eble estas iom stranga. Ĉu vere ne eblus uzi ĝin pli simple, por ambaŭ rotaciaj direktoj, sed pli rapide, en nur 4 fazoj? 4096 paŝoj por unu tuta turno de ekstera akso ŝajnas iom multe. Norma stepper motoro ja bezonas nur ekzemple 200 paŝoj por unu turno de akso kaj rotacias multe pli rapide.
Antaŭe mi desegnis la du bobenoj de unipolar -motoro en la stilo de maldekstra bildo. Estas tamen pli konvene por desegni la saman strukturon iom alie kiam oni pensas pri la fortigilo kio pelu la motoron laŭ pulsoj el io bona kaj pli inteligenta fonto.
La dekstra desegnaĵo pli perobjekte - uzante FET-transistoroj - montras kio estus mia celo kun la unipolar -motoroj kaj la 6-konduktilaj bipolar -motoroj kiojn eblas peli kiel bipolar half-coil, praktike same kiel unipolar. Mi ankoraŭ ne desegnis la fortigilon ULN2003A
kun la stepper motoro laŭ tio por mi nova stilo.
Vi notu ke mi interŝanĝis la ordon de duonoj de bobenoj "B" kaj "neB" (B-streko) en la dekstra bildo. Evidente tio estas la norma ordo de konektiloj por la bobenoj de motoro.
Laŭ miaj manaj eksperimentoj per stepper -motoroj en la antaŭaj artikoloj oni donu la pulsojn por FET-transistoroj en la ordo ..., A, B, neA, neB, ... por unu rotacia direkto kaj en la alia ordo por la alia rotacia direkto.
Nun estus la sekvanta tasko por efektivigi tiuj pulsoj per programo de RPi kaj la malnova fortigileto ULN2003A
.
... Iom multe por fari ... iom poste ni renkontos ...
Suomoj diras "Hullu paljon työtä tekee, viisas pääsee vähemmällä!", esperante "Frenezulo multe laboras, prudentulo pli facile plenumos". Tial mi decidis unue por serĉi pli-malpli pretan uzeblan solvon en Interreto.
Ekzistas bona preta Python programo en la Interreto en la angla artikolo: "Stepper Motor Control In Python" por la iom stranga malgranda unipolar motoro kaj mi unue uzis ĝin.
Kaj certe la nomita programo funkcias. La sola ebleco por stopi la programon tamen estas "Control-C" (ofte skribita ^C) kaj tiam povas la GPIO resti en iom nekonvena stato.
En apuda foto RPi pelas la motoron per la fortigilo ULN2003A
. Baterio estas 3 voltoj kaj eĉ tra 1 Ω reostato la motoro bone turnas, kvankam estas nominale 5 V motoro kaj la tensio iom malpliigas en la reostato.
Oni aparte nepre memoru ke ĉiuj aparatoj devas havi komunan elektran teron. La negativa poluso de baterio (-) estu rekte kunigita kun la GND -pinto de RPi kaj kun la GND-pinto de fortigilo.
Kiam oni donas valuoj ±1 kaj ±2 por la varianto nomita StepDir
, oni povas selekti la direkton de rotacio kaj ankaŭ selekti inter alternative 8 paŝoj aŭ nur 4 paŝoj por unu ciklo.
StepDir = 1 # Set to 1 or 2 for clockwise # Set to -1 or -2 for anti-clockwise
Por la aliaj stepper -motoroj mi tamen ne estas tute kontenta kun tio programo.
Mia plano estas por labori kun nur 4 paŝoj por ciklo kaj mi volas uzi nur unu duonan bobenon pofoje por limigi la kurenton. Krome mi nepre volas fini la programon tiel ke GPIO restos en norma stato. Nu, klare estus ankaŭ pli oportune por povi aliigi la direkton de rotacio por la motoro sen mane aliigi la programon. Pli bone la programo legu statojn de 2 eksteraj konektiloj kaj el tioj decidu la rotacian direkton.
Estas tamen multe da bonaj ecoj en la programo kaj estas uzebla por simplaj testoj ... kvankam la programo neniam finas per la komando GPIO.cleanup()
. Miaopinie la programo fine permesas elektran kurenton libere flui tra unu aŭ du bobenoj. Tial estas la teno de motoro eble iom pli forta por la pozo de akso, sed mi prefere aparte tute estingus la kurenton post la programo.
Mi skribis la Python -programon stepper.py en SSH-konekto el loka RPi4 por la "Lite"-muntita distanca RPi3 uzante la simplan tekstan programon nano kies fenestron vi vidas apude.
Oni povas peli la programon en la distanca RPi ekzemple per komando sudo python stepper.py 10
en SSH-konekto kaj tiam estas tempo inter paŝoj 10 milisekundoj, sekve estas 100 paŝoj por unu sekundo.
La programo uzas la sekvantaj GPIO-pintoj por peli la fortigilon:
Kaj oni certe ne forgesu teron, GND. Mi ja uzas apartan 3 V baterion kaj tial mi ne prenas la uzan tension el GPIO-pintoj de RPi.
Nu, en la programo estas aparte interesa la tabelo Seq
kio enhavas la pulsojn por la fortigilo, en ordo por la fizikaj GPIO-pintoj StepPins = [17,22,23,24]
:
Seq = [[1,0,0,1], # 0 [1,0,0,0], [1,1,0,0], # 2 [0,1,0,0], [0,1,1,0], # 4 [0,0,1,0], [0,0,1,1], # 6 [0,0,0,1]]
Se oni volas uzi nur 4 paŝoj por ciklo, oni bezonas nur la parajn liniojn 0, 2, 4, 6. Surprize estas ke tioj uzas samtempe du duonoj da bobenoj, du nombroj 1 en la sama vico. Mi pensis ke por baza uzo de motoro oni uzu nur unu duonon de bobeno pofoje, sed evidente tio ne estas la kazo kun la sendube iom stranga motoro 28BYJ48
.
Iom por pensi. Kiel mi uzu mian karan sekvencon de pulsoj "..., A, B, neA, neB, ..." kion mi jam tiel bone lernis dum manaj testoj? Tio sekvenco povus ja egale bone esti skribita ankaŭ laŭ iom alia stilo: "..., A+, B+, A-, B-, ..."
Ni evidente devas batali preskaŭ senfine kun la malgrandaj elektraj motoroj. Sed tio ja estas la vera senco de vivo, almenaŭ por honesta inĝeniero.
Kaj certe fine ..........
NI VENKOS!
La Ambasadoro en Finnlando de sendependa nacio Mueleja Insulo |