Electronics

Home/Electronics

May 2017

Megaboost

By |May 19th, 2017|Concrete Clock, Electronics|

Møkk lei av tandre Kina-boostconvertere, som dør på seg, omtrent bare ved at man observerer utgangen på dem, så bestemte jeg meg for å designe en egen, med et fåtall komponenter – men da robuste komponenter.

Denne converteren består av totalt 10 komponenter. Hadde jeg funnet en logikknivå mosfet, som taklet høye nok spenninger, så kunne jeg klart meg med 6. Jeg valgte heller å plugge inn en dedikert mosfet-driver for å unngå total nedsmeltning, i fall jeg ikke klarte å switche den 100% fra PWM-kilden min.

Men…

Hvilken PWM-kilde skal man velge ?

Gamleguttas favoritt er garantert en 555 timer. Den koster ca 50 cent, men trenger bøttevis med passive komponenter rundt seg.

Hipsterne ville sikkert foreslå å misbruke en eksotisk switchingkontroller. Vel… De koster minst like mye som en 555, og de jeg har sett trenger også et lass passive komponenter for å fungere.

Jeg liker brutalist-design (som iofs bør være åpenbart for de som spotter IRF540’en på bildet). Jeg liker også enkle design – og den enkleste PWM-kilden du kan få, som heller ikke trenger noen støttekomponenter, er da – wait for it – en AtTiny! Den koster nesten en hel dollar, så den er pricey, men guhdbedre, hvor vakkert det blir. Hvis jeg kliner inn et par resistorer i tillegg, så kan jeg også la den samme mikrokontrolleren sense på drivspenninga, og evt dynamisk tilpasse frekvens / duty cycle, hvis det skulle være behov. Yay !

Nå skal det sies at boostconvertere, gjerne er litt enklere på papiret enn i real life. Megaboost var designet for å gi 170V ut, men den gir bare 121V ut – riktignok med kun *host* 3V inn. Vi få myse litt på layout og komponentverdier, så tenker jeg det blir en liten oppdateringspost om litt.

Nå skal det sies at det jeg vant m.h.t. elegant liten krets, kanskje gikk litt tapt i programmeringskabelen jeg endte opp med å konstruere for å få programmere AtTinyen på kretskortet…


IMG_1697

 

April 2017

IN-2 Nixie modules.

By |April 1st, 2017|Concrete Clock, Electronics|

Da er jeg klar med en ny variant av Nixie-kort. Denne gangen har jeg valgt å gjøre dem modulbasert. Hver modul har to IN-2 rør, K155ID1-driverkretser og et shiftregister. Modulene har en 6-pins connector, som gjør det mulig å seriekoble så mange man ønsker, kun begrenset av hvor mye strøm, som boost-converteren kan levere. Hvert siffer i en slik kjede kan adresseres individuelt.

Eagle-filer og eksempelkode finner du her: https://github.com/hansj66/Nixie-Modules.

Forvent tilsvarende moduler for IN-1, samt for ymse VFD-rør – når jeg får ånden over meg :)

in2-modules

in2-modules-assembled

Ferdig !

By |April 1st, 2017|Electronics, Pajazzo|

Jeg har fått noen henvendelser om Spar-7 kort det siste året. I fjor så antydet jeg at jeg kunne ha en ny batch med kort klare til sommeren samme år. Det klarte jeg forsåvidt, men firmwaren tok litt lenger tid. Mest fordi den havnet sist på prioriteringslista – etter dagjobben i Exploratory Engineering, “kveldsjobben” i Pop Bumper, og også etter visst behov for litt rekreasjon innimellom (rekreasjon == aktiviteter uten deadline ;))

Det tok litt tid, men nå er firmwaren klar. Kortene testet og pakket. Jeg sender ut mail til de som tidligere har vist interesse før påske. Kortene finnes i et begrenset antall og det vil maksimalt bli produsert 6 nye kort etter denne batchen. Deretter er det slutt.

Salgsbetingelser

  • Prisen pr kort er 2500 + frakt.
  • Kortet installeres og brukes på eget ansvar. Det er hobbyelektronikk, som hverken er CE- eller Nemko-godkjent. Trekk ut kontakten når automaten ikke er i bruk og ha i bakhodet at resten av elektronikken / mekanikken i disse automatene er fra produksjonsåret.
  • Hvis av en eller annen grunn ikke fungerer i automaten, så refunderes prisen for kortet, ved retur av dette. Fraktkostnader refunderes ikke. Returfrakt bekostes av kjøper.

Installasjon

  • Trekk ut kontakten til automaten.
  • Trekk ut det gamle kortet fra edge-connectoren og trekk også evt ut IDC-connectoren, som går til displayet, hvis du har en variant med displaysiffer (Ikke alle automatene, som kortet fungerer i har dette)
  • Sett inn kortet. Koble evt displayconnectoren til det nye kortet. Displayconnectoren på de gamle Spar7’ene har ikke noen key, så det er mulig å sette inn denne feil vei. (Koble ut strømmen og snu connectoren hvis displayet ikke lyser)
  • Sjekk at begge lysdiodene lyser. Hvis en eller begge av disse er mørke, så er er det sannsynligvis feil ved transformatoren i automaten. Alternativt, så kan det skyldes korrosjon / oksidasjon av edgeconnectoren som kortet er montert i.

Installasjon

Initiell test av brytere og hopper

Åpne knipsekassa og gjenta følgende for hver gevinstport:

  • Aktiver bryteren på baksiden av gevinstporten. Sjekk at gevinst vises i displayet.
  • Aktiver deretter bryteren i renna under gevinstportene (coin exit). Du vil høre at hopper-releet slår inn, slik at bremsen på hoppermotoren kobles fra. Hopperen skal nå begynne å rotere. Gevinst i displayet teller ned med en, inntil hele gevinsten er utbetalt.

Gevinstport

(Gevinstport, bakside)

CoinExit

(Coin exit – trigger utbetaling etter aktivering av gevinstport.)

Hvis en bryter ikke lar seg aktivere

Bryteren kan være defekt, eller det kan ha oppstått kabelbrudd mellom bryteren og edgeconnectoren, Pinnene på edgeconnectoren, som kortet er montert i kan også være korrodert / oksidert.

Bryterne kan testes manuelt hvis kortet trekkes ut av knipsekassa (med strømmen av).

Bryteren kan med et multimeter med kontinuitetssjekk. Bryterne kan ha både NC (Normally closed) og NO (Normally open) tilkoblinger. En defekt bryter kan feile ved at NC-tilkoblingen ikke er lukket når bryteren er i hvilestilling, eller ved at NO-tilkoblingen ikke lukkes når bryteren er aktiv. Vippearmen på bryteren kan også være deformert eller knekt.

De to nederste pinnene på bryterne ved gevinstportene er NC og øverste + nederste pinne er NO. Ledningsbrudd kan finnes ved å måle kontinuitet mellom nederste pinne på gevinstporten og pinne#3 fra venstre på edgeconnectoren.

Hvis hopperen ikke roterer

Hoppermotoren i knipsekassene er alltid aktiv, men en bremse på motoren sørger for at den kun roterer når gevinst skal utbetales.

Følgende kan forhindre at hopperen fungerer som den skal:

  1. Transformatoren leverer ikke strøm til hoppermotoren (NB! nettspenning).
  2. Elektromagneten, som frikobler bremsen fungerer ikke. Motoren må isåfall repareres eller erstattes.
  3. Coin-røret over hopperen er montert slik at det er i kontakt med rotoren og derfor bremser hopperen. Skru coin-røret litt opp for å korrigere dette.
  4. Rotoren er skitten. Myntene er i konstant kontakt med rotoren, og det vil kunne avsettes støv/fett på denne. Dette fikses ved å demontere og vaske de hvite plastdelene.

Hvis hopperen roterer svært sakte

Sjekk pkt 3 & 4 over.

Hvis hopperen ikke stopper ved gevinstutbetaling.

Hopperen betaler ut en mynt ved hver kvart rotasjon. Hvor langt rotoren har rotert, detekteres av hopper-bryteren. Hvis denne er defekt, så vil ikke automaten kunne detektere hvor mange mynter som er utbetalt og den vil tømme hele gevinstrøret.

Hvis spillet utbetaler en mynt for lite, eller en mynt for mye.

Spillet detekterer at en mynt er utbetalt ved at et hjørne på klossen over rotoren lukke hopper bryteren og at den så åpner seg igjen. Hvis armen på denne bryteren er deformert eller bøyd, så vil aktiveringen av bryteren ikke være synkronisert med posisjonen av mynter i rotoren. Se bilde under for hvilestilling på bryteren.

I hvilestilling, så skal ikke bryterarmen lukke bryteren. Test dette ved å forsøke å lukke bryterarmen manueltnår den står i hvilestilling. Du skal da kunne høre et klikk fra bryteren.

Hopper_over

(Hopper i hvilestilling. Bryteren er ikke mekanisk lukket)

Hopper_under

(underside av hopper når hopperbryteren er åpen. Legg merke til myntens posisjon.)

Telleverk

Da dette kortet ikke er laget for kommersiell bruk, så vil det ikke aktivere telleverket i automaten.

February 2017

IN-12 Nixie Shield v.1.1

By |February 15th, 2017|Concrete Clock, Electronics|

Sånn, da har man fikset siste bug i IN-12 Nixie Shield for Arduino, og vi er på versjon 1.1. Har testet litt i kveld og alt ser ut til å fungere helt ok. Skjema, layout og et veldig enkelt kodeeksempel ligger nå ute på GitHub (https://github.com/hansj66/Nixie-Modules). Knock yourselves out :)

Jeg jobber også med daisy-chainbare moduler. Gjerrig som jeg er, så er disse på tur med dampbåt fra Kina. Ta derfor modul-designene på GitHub med en klype salt, inntil ny versjon foreligger av disse også.

January 2017

IN-12 Nixie Shield

By |January 18th, 2017|Electronics|

Hackathon på jobb i dag. I mellom IoT/LoRa-, VR-, 3D-printsesjoner, så klarte jeg å ettertrykkelig fritere en mikrobiten til balansebotten (patologen har ikke avgitt rapport enda, så jeg aner ikke hvorfor).

På jakt etter en liten trøste-win, så lyktes jeg heldgivs noe bedre når jeg endelig fikk mannet meg opp til å koble en boost-converter på det hjemmesnekra Nixie-shieldet.

Encodern synes å være kodet av fulle sjømenn, men det er kun software, så det er høyst fiksbart. Siffer kan adresseres og høyspentbiten ser ikke ut til å forårsake hardware-resets eller røyksopper noe sted. Alt drives av et lite 9V-adapter.

Nå som jeg vet at ting henger sånn tålelig på greip, så er det også på tide å få sendt de daisy-chainbare nixiemodulene til trykking også.

December 2016

Stumbler – part III (more cowbell)

By |December 26th, 2016|3D Printing, Electronics, Robotics|

PID-kontrolleren fungerte. Lavpassfilteret for aksellerometerdata fungerte. Det samme gjorde kalmanfilteret. Det hjalp likevel så inderlig lite når aksellerometeret støyet så mye, og i tillegg var så følsomt for vibrasjoner at enhver motorrespons resulterte i spinnville data. Stumbler ville ikke stå på egne hjul.

Derfor byttet jeg ut IMUen i noe mer beefy. Jeg gikk for BNO055 fra BOSCH. Dette er mer et SoC enn en sensor, da den gjør sensor fusion for deg. Den snakker i likhet med LSM9DS1 I2C, men har et mye enklere oppsett. Du kan bruke den i forskjellige modus. Enten som en tradisjonell IMU, eller som en 9DOF sensor med fusion-algoritme som snurrer i bakgrunnen. Ut får du ferdigtygde data, i form av quaternions, Eulervinkler, rotasjonsvektor, lineær aksellerasjon, gravitasjon og heading. Det finnes nok enda bedre sensorer der ute, men denne kostet rett under 40 USD og var svært enkel å bruke. Se BNO055.cpp for bare bones implementasjonseksempel, inklusive kalibrering.

Jeg har kranglet med LSM9DS1 i ukesvis, men bare et par timer etter å ha byttet IMU, så hadde jeg tegn til virk. Den balanserte nå såpass bra at den tålte å krasje i vegger, samt å få en dytt. Den tok seg nå inn igjen.

PID-parametrene kan nok fremdeles forbedres, iom at den er litt “tense” (Vi har hatt noen spektakulære krasj på steingulvet her). Under, så ser du en av de første prøveturene med BNO055 – med ukalibrert sensor (kan jo ikke kaste bort tiden med å lese spesifikasjon…)

Den var fremdeles litt vill av seg, så jeg myste litt i databladet. Det viste seg at BNO055’en har en autokalibreringsalgoritme. Man kan lese ut kalibreringsdata fra kalibrerningsstatusregisteret. Ved å vifte litt rundt i lufta med botten, inntil man leser ut “1” for bit 6 & 7, så oppførte ting seg enda bedre etterpå.

Under, så balanserer den helt fint på sofaen. Relativt stram pute, og absolutt ikke et flatt underlag.

Må kanskje presisere at den ikke akkurat er fjellstø ennå. Den tryner ofte med pannebrasken ned i flisgulvet, og forsøker av og til å stikke av – i ganske voldsom fart. Signalet fra PID-kontrolleren er vel å betrakte som non-insane i tiltintervallet [-3, 3] grader elns – foreløpig.

Jeg har ihvertfall nok virk til å kunne bygge en 2.0 versjon av botten med større batteripakke, samt litt mer optimal plassering av sensoren. Plata, som alt er montert på nå, er litt wobbly, og stepperne kunne gjerne hatt enda litt mer kraft. Vurderer også å kanskje lage et lite PCB med stepperkontrollere og IMU integrert.

Repo med modellfiler og (prototyp)kode finnes her: https://github.com/hansj66/Stumbler

October 2016

Gameroom 2.0

By |October 15th, 2016|Arcade / Gaming, Electronics, Pinball|

For et halvt år siden, så la jeg gulvet i spillrommet. Siden da, så har det skjedd absolutt ingenting der inne. Rommet har i praksis fungert som et flipper- og komponent-lager. 

{"focusMode":0,"deviceTilt":0.142192929983139,"whiteBalanceProgram":0,"macroEnabled":false,"qualityMode":3}

Jeg har i løpet av 2016, sammen med partner in crime, Øyvind, skrudd mer flipper enn jeg har gjort i de foregående 49 årene. Dette for å holde maskinene til Pop Bumper i live nede i kjelleren på Work-Work.  Hjemmeflipperne har blitt noe stemoderlig behandlet og har også gjerne blitt benyttet som donormaskiner.

Men nå skal de gamle klassikerne vekkes til liv igjen.

I går, så tok jeg tak i Doctor Who, som jeg kjøpte fra et dødsbo for mange herrens år siden. Jeg fikset den opp, og i årene siden, så har den stått lagret. Det viste seg at den hadde en ganske kraftig skade på kretskortet, pga lekkasje fra backupbatteriene. To kolonner i switchmatrisa var døde, da kobberbaner og IC-pinner var etset bort. Jeg burde egentlig ha handlet et nytt WPC-kort, men valgte å patche det eksisterende istedet. It ain’t perty, men det virker. Doctor Who er nå i live !. Repair-loggen finner du her.

patch

I dag, så tok jeg tak i Cirqus Voltaire, som er en rimelig sjelden affære. Det ble kun produsert 2704 stk og den er såpass ettertraktet at jeg i praksis aldri kan selge den. Jeg vil isåfall aldri finne en som er like pen, hvis jeg skulle ombestemme meg. Jeg måtte inn med en coil, som i all hast hadde blitt klippet av – fordi vi trengte samme typen til en maskin på Work-Work. Flere brytere måtte sjekkes/fikses, og en av dem sto selvfølgeligvis inni Ringmaster-mekanismen, som er det vanskeligst tilgjengelige området på hele maskina. Men jeg ga meg ikke. Cirqus Voltaire er nå i live !

Den siste maskina som skal fikses, er Lord of The Rings. Her skal optoer monteres, samt at jeg skal bruke den som testmaskin, da jeg må verifisere reperasjon av powerdriverkortet til en tilsvarende maskin, som vi har på stående Work-Work.

Stumbler – part II (a few iterations later)

By |October 11th, 2016|3D Printing, Electronics, Rants, Robotics|

Å forsøke seg på noe man ikke kan, er makerens mantra, samt en ypperlig kilde til læring (gitt at man da ikke ender opp med en Darwin Award i prosessen). En god læringskurve krever et minimum av surfe-skills, samt et Dirk Dale soundtrack.

Å gjøre noe som involverer flere ting man ikke kan – minner mer om å surfe på bølger, pisket opp av Dirac. Jo større fart du har inn i ting som ser ut som delta-funksjoner, jo vondere gjør det når du treffer.

Newton…

Jeg startet med det jeg kunne, dvs å source deler, samt 3D-printe det strukturelle “limet”, som holdt alle dele sammen. Deretter var det bare å rappe noen strategiske kodefragmenter fra the interwebs, og så hadde man funky balansebot. Right… ?

Well…

Å skru sammen en bot, samt koble sammen noen stepper-drivere, en mikrokontroller og en IMU viste seg å være ganske grei skuring. Etter å ha bannet litt over databladet til IMU’en, så hadde jeg kommunikasjon med denne via I2C. Hjul snurret og jeg klarte å måle akselerasjon og gyrorater.

Nå var det kun litt tafsing på parametrene til PID-regulatoren, så kom botten til å stå som en påle. Right… ?

Not so.

Akselerometeret gir deg målinger i G på tre akser. Du kan da regne ut vinkelen til botten. Akseleromteteret har en del støy og det er helsikes følsomt for vibrasjoner, men du kan stole på lavfrekvenskomponenten i målingene.

Gyroen gir deg en rate ut, ikke en vinkel. Hvis du kjenner dt, så kan du regne om gyroraten til en delta vinkel. Den drifter over tid, men du kan stole på høyfrekvenskomponenten i målingene.

Du kan kombinere disse målingene på flere måter. Man kan gå for et komplementærfilter, et Kalmanfilter, eller ta den helt ut og også dra inn magnetometer-komponenten i noe litt mer hårete, som f.eks Madgwicks AHRS-algoritme.

Sensor fusion er et løst problem, selv om Kalmanfilter, eller Madgwick-algoritmen gir meg vondt i hodet når jeg forsøker å se under panseret. Jeg liker å adressere litt mer praktiske problemstillinger. Som f.eks. å krangle med fysiske lover.

Newtons 3. lov viste seg heldigvis å fremdeles være i effekt, da den slo inn med full kraft fra første step. Bokstavelig talt.

Motorene har ganske mye masse, og når du sender dem et step-signal, så gjør de akkurat det de er designet for å gjøre. De flytter rotoren nøyaktig 1/200 rotasjon, mens statoren står helt stille. Right… ?

Not so.

Jeg gikk for minste motstands vei i det mekaniske designet, så alt er veldig godt boltet sammen. En liten vibrasjon i bånn vil forplante seg helt opp i toppen av botten, og gjerne forsterkes litt på veien også. Hvilket i sin tur gjør at MEMS-sensorene i IMUen går haywire. Dette danner så en fin liten feedback-loop, som gjør ethvert forsøk på PID-tuning komplett meningsløst.

Jeg hadde tidligere, implisitt antatt at botten kunne håndtere momentan aksellerasjon, da jeg hadde foret kontroll-outputen fra PID-algoritmen rett inn i en funksjon av typen n/control == PWM-frekvens. Dette ville ha fungert utmerket i en verden der Newtons første lov ikke hadde vært i effekt.

Jeg hadde nå en bot, som var fundamentalt uenig med Newton på to punkter. Og jeg endte som vanlig opp med å være megler.

For å komme vibrasjonene til livs, så endte jeg i kveld opp med en step-algoritme som er noe smidigere. Jeg bruker fremdeles n/control fra PID-regulatoren, men nå for å signalisere ønsket PWM-frekvens. Deretter er det en opp til en interrupt-drevet step-funksjon å akselerere så smooth som overhodet mulig opp til denne, før neste signal kommer fra PID-kontrolleren.  PID-oppdateringer skjer nå på 200Hz og step-funksjonen kjører på 7 kHz. Hvis dette ikke drar ned sensorstøyen, så får jeg finne opp en inertia damper, evt surre fast murstein på botten. Stay tuned.

Service definert.

By |October 8th, 2016|Electronics|

Strømmen gikk her en dag, og når den kom på igjen, så hadde sentralenheten for varmereguleringen i huset tatt kvelden. Du kjenner sikkert igjen den litt synkende følelsen du får, når du er stilt ovenfor et defekt stykke teknologi, som kun en elektriker med svart belte i fakturering, kjøregodtgjørelse, samt kunsten å ikke møte opp til avtalt tid, er i stand til å fikse ?

Den følelsen var i ferd med å sette seg, da det plutselig slo meg at vi lever i det herrens år 2016, og at produsenten av utstyret sikkert er å få tak i på nett. Jeg fant fram til Facebooksiden til DEVI Norge og sendte dem en melding ut på kvelden den 28. september.

“Hei ! Fikk plutselig opp denne meldingen på varmestyringsanlegget (Etter over 5 år i drift).hva gjør jeg for å resette denne ?” (+ bilde av displayet på sentralenheten)

Etter et par timer, så fikk jeg følgende svar:

“Vår produktsjef tar kontakt med deg i morgen. Kan han nå deg på et telefon nr?”

Dagen etter så ringte de og fortalte at denne feilen var et ikke helt ukjent problem på de tidlige modellene – og uten at jeg engang hadde hintet i retning reklamasjon, så ble jeg utstyrt med:

  • a) en kliss ny sentralenhet,
  • b) en batterienhet, som jeg ville trenge for å konfigurere sentralen, og
  • c) et telefonnummer jeg kunne ringe, i fall jeg fikk problemer med konfigurasjonen

– kostnadsfritt!

Jeg trengte ikke engang oppgi adressen min, kun bekrefte den, og pakken ble forsøkt levert på døra den 30. september – 2 dager etter at problemet oppsto.

Dette er et servicenivå man ikke er vant med her hjemme. Dette er service definert. Det er faktisk bloggverdig når man opplever slikt :)

September 2016

Stumbler – part I (Code name “Karma”)

By |September 25th, 2016|3D Printing, Electronics, Robotics|

Rasket med meg en BBC Micro:Bit hjem fra jobb. Dette er en liten datamaskin, som blir delt ut til alle 11-12-åringer i England. Det sitter en nRF51822 (ARM Cortex M0) fra Nordic Semiconductor på den. Den har magnetometer og akselerometer. Man har knapper og leds. Det er en høyst hackbar sak, og ungene kan programmere den i JavaScript, Python, eller i Microsoft sin Block Editor. Hvis du kobler Micro:Bit til en datamaskin via USB, så vil den dukke opp som en ekstern disk. Man slipper ganske enkelt den kompilerte hex-fila ned på denne disken og så er den programmert. Du kan også programmere den via blåtann fra telefonen, hvilket er en genistrek m.t.p. å senke terskler m.h.t. programmering, for ungene.

Siden jeg er hønngammal – og liker litt eldre språk, så valgte jeg å istedet sette opp Micro:Bit som target i mBed sin online-kompilator. Jeg kan da leke meg med den i et språk jeg er komfortabel med – d.v.s. C++. Jeg har ikke brukt denne verktøykjeden siden jeg fikk min første (og frem til nå – eneste) mBed i 2010, så jeg kniste litt når jeg så at mBed/Twitter-prosjektet mitt fremdeles lå i skya når jeg logget på.

Anyways, dette er en høyst hackbar sak,  den er lett å programmere, og den er liten. nRF51822 har nok oomph til å gjøre ganske mye, så jeg fant ut at en balanserobot kunne være en ok utfordring.

Micro:Bit har en edge-connector, som man kan putte inn i et eksperimentkort, som har breakoutpinner og breadboard. Jeg fant ut at jeg bare var to stenger, et par motorer og litt plast unna noe som lignet en robot, så jeg designet noen smådeler i Fusion 360 for å holde ting sammen. Printingen var unnagjort på et par kvelder.

Siden kortet ikke har gyro, så hektet jeg på en LSM9DS1 fra Sparkfun (også rappet fra jobben). Denne har akselerometer, gyro og magnetometer. Du kan kommunisere med dette via SPI eller I2C. Som motorer, så valgte jeg et par 1,7A Nema17, som jeg hadde liggende. Disse blir drevet av hver sin DRV8825 stepperkontroller. Alt dette kan kontrolleres fra Micro:Bit via 6 ledninger (2 stk for I2C og 4 stk for STEP/DIR-tilkoblingene på stepperkontrollene)

Siden motorene trives best på ganske høy spenning, så har jeg en småfeit batteripakke i toppen av roboten. En LD1117V33 regulerer batterispenninga ned til 3,3V.

Jeg bannet initielt litt over I2C-kommunikasjonen, men har nå fin (og rask) datastrøm fra sensorene. Det hjelper alltid å skrive sin egen kode – istedet for å bruke forvirrende biblioteker, som insisterer på å abstrahere hver eneste beskrevne bit i databladet. Stepperne er relativt greie å styre via de analoge pinnene på Micro:Bit. Ved å skrive en verdi til en analog pinne, så har man gratis PWM-output fra denne. Den analoge verdien er i intervallet 0 – 1023. “0” == 0% duty cycle og 1023 == 100% duty cycle. Man kan så bestemme frekvensen ved å sette perioden på den analoge pinnen.

Stepperkontrollerne tolker en høy/lav-puls på STEP-pinnen som step-signal, så her PWM-kontroll ideelt m.t.p. eksempelvis PID-kontroll av motorhastighet fra observert feil i balansevinkel.

Jeg har nå en mekanisk og elektrisk fungerende plattform for balanserobot. Jeg lurer litt på om jeg skal booste spenninga på stepperne opp til 24V ved å bruke 14650 LiIon-celler istedet for NiMH. Dette for å øke momentet og makshastigheten på motorene. Ellers, så ser ting ut til å virke rimelig bra.

Nå kommer den vanskelige biten, d.v.s. å integrere sensorinput fra flere kilder i kontroll-loopen. Modige sjeler kan google “sensor fusion / kalman filter” for å danne seg et inntrykk av hva som nå står for døra.

Når alt funker og er stabilt, så publiserer jeg kode, skjema, komponentliste og STEP-filer på GitHub. Koden er såpass generisk at den bør fungere på det meste av mikrokontrollere man kan utvikle for i C++. Det eneste Micro:Bit-spesifikke er to kall for å lese/skrive data over I2C og to kall for å sette PWM duty cycle og frekvens på pinnene til stepper-kontrolleren.

img_3271

img_3269