Electronics

Home/Electronics

August 2017

Gjenbruk!

By |August 7th, 2017|Electronics|

Hoarder eller ei – når man snubler over en Dymo Pocket til 20 spenn på Fretex, så er det vanskelig å ikke slå til.

dymo

Optimisten i meg tenkte vel i sitt stille sinn at den var feilpriset, men pessimisten i meg antok at den nok var testet og funnet dau, før den ble lagt ut for salg til den nette pris av en halv bussbillett.

Kanskje unødvendig å si at den ble min. Den ble med hjem og batterier ble stappet inn. Powerknappen ble nappet i – og – displayet var selvfølgeligvis klin dødt. Ingenting skjedde når jeg trykket på knappene. That is… Når jeg trykket på “PRINT”, så fungerte mekanikken helt fint. Jeg øynet håp, og demonterte Dymoen for å komme til elektronikken.

dymo_inside

Displaykabelen viste seg å være av type “limt” (== “highly suspect”), så jeg klemte litt på den. Displayet viste garbage ! Yay !

dymo_buggy

Jeg var litt usikker på hvor varm luft jeg burde bruke for å fikse den, så jeg startet med 100 grader varmluft og endte på 170 grader. Etter oppvarming, tok jeg i bruk spesialverktøy for å gni på oversiden av kabelen (fingernegl…)

Og voila !

dymo_virk

 

July 2017

Klokkerent signal !

By |July 11th, 2017|Electronics|

Var en snartur innom jobb i dag, selv om det er ferietid. En perfekt timet pakke, fra Hong Kong, ventet på meg i resepsjonen – en protobatch med 10 stk duggfriske kretskort fra DirtyPCBs.

Alt jeg har laget fram til nå, har vært autoroutede 2-lags kort. Denne gangen valgte jeg å gjøre det skikkelig. To signal-lag og dedikerte jord-/powerplan. Manuelt routet. (Etter at Autodesk overtok Cadsoft – og dermed Eagle, så endret prismodellen for Eagle seg. Det burde nå være mulig for de fleste å handle en standardlisens, som tillater design av 4 lags-kort på 160x100mm. M.a.o. ingen grunn til å utvide huslånet for å handle en Altiumlisens, eller lide seg gjennom KiCad-tutorials)

På jobb, så er vi i LoRa-/LoRaWAN-modus for tiden. Vi har skrudd sammen en sjarmerende liten radiomodul med navn “EE-02”. Denne har et par kilometers rekkevidde i tettbygd strøk, og glatt noen titalls kilometer rekkevidde hvis det er fri sikt mellom radioene. Nevnte jeg at den nesten ikke bruker strøm ? Radioen er en SX1276 fra Semtech. Denne snakker med en nRF52 mikrokontroller fra Nordic Semiconductor. Denne tilbyr, i tillegg til masse GPIO, masse prosesseringskraft og har også Bluetooth og NFC. LoRa-modulen kan via en RF-switch konfigureres til å benytte 868- eller 433-båndet.

Vi har tidligere benyttet nRF52 development kit for å programmere EE-02, men har nå laget vårt eget, ved navn EE-04. Antar at dette vil dukke opp på et makerspace nær deg om ikke så alt for lenge.

Nevnte jeg at vi også hadde opensourcet hardwaren ? Jepp, designfiler ligger på GitHub.

På bildet under, så ser du utviklingskittet for EE-02 – EE04. Dette har en EE-02-modul på kortet, men man kan bruke debug out-connectoren for å bruke dette til å kunne programmere eksterne moduler / custom kort. En SAM3U2C med et custom Segger-image, sørger for enkel programmering og debugging. Ved tilkobling, så dukker EE-04, lik mBed,  opp som en ekstern disk, som du kan slippe en hex-fil på. SAM-chippen sørger så for å programmere EE-02-modulen.

EE-04 (Utviklingskit for EE-02)

Innimellom LoRaWAN-implementasjon på serverside i Go, implementasjon av firmware i C og debugging av hardware, så eksperimenterer vi en del med å integrere ymse sensorer inn i EE-02.

Vi har så langt hektet opp og eksperimentert med GPS, IMU, CO2-, temperatur-, luftfuktighets, – PM2.5 partikkel-sensorer til EE-02. Jordfuktighetssensor og mye annet ligger i løpya.  For å gjøre det enkelt å eksperimentere, så laget jeg et lite breakout-kort for EE-02, som har headere for GPIO, USB-connector og en litt beefy spenningsregulator. Dette er ikke et offisielt produkt eller tiltenkt produksjonselektronikk, men det gjør det svært lett å eksperimentere med modulen. Kall det et “ventehack” i påvente av at vi skulle få ferdig EE-04. Et enkelt sensorshield tar gjerne ikke mer enn et par timer å designe. Delene ramler inn døra et par dager etterpå, og etter ei ukes tid, så kommer en prototypbatch med kretskort fra Hong Kong.  Prisen på et slikt shield er gjerne ikke mer enn man normalt bruker på å spise en usubsidert lunsj i kantina.

Uoffisielt breakoutkort for EE-02

Impulskjøper jeg ikke en ny sensor selv, så kommer sjefen gjerne med en impulshandlet en – hvilket leder meg til poenget.

Sjefen slapp et par HB-100 ned på pulten min for litt siden, sannsynligvis i håp om at det manifisterte seg et lite EE-02-shield med X-Band doppler radar på i nær fremtid.

Jeg benyttet anledningen til å lære meg å lage 4-lagskort i Eagle og implementerte deretter CW-versjonen fra referanseimplementasjonen for HB-100. Siden jeg ikke var helt trygg på utspenninga på forsterkerkretsen, så hektet jeg på en spenningsdeler, slik at jeg ikke friterte GPIO-pinnen på EE-02.

Sensoren sender ut mikrobølgepulser, som den så måler dopplershift på (tror jeg…). Output fra modulen er et pulstog, som mikrokontrolleren må lese og regne ut frekvensen på. Dopplerfrekvensen kan så regnes om til hastighet med en enkel formel.

Doppler radar

Litt spent på om mitt første 4-lagskort virket, så tok jeg med meg kort og komponenter hjem. I farta, så hadde jeg rent glemt at jeg er litt bortskjemt av utstyret på labben på jobb og at en Weller WX2 er hakket bedre å jobbe med enn den crappy kina-loddebolten jeg har hjemme. Okularene på stereolupa, som jeg har stående på pulten hjemme er, i likhet med den på jobb, også merket med “widefield” – uten at jeg riktig forstår hvorfor.

Loddeøvelsen var over etter en times tid, og kan mest sammenlignes med følelsen av å skulle lodde med spett, mens man myste gjennom et nøkkelhull.

Som en første test, så koblet jeg EE-02’en til USB og hektet på scopet på signalbanen ut fra forsterkeren, som står bak sensoren. Scopet viste et helt flatt signal – d.v.s. inntil jeg beveget meg bort fra, eller mot sensoren. Da dundret det inn klokke-rene pulstog, der frekvensen åpenbart var en funksjon av hastigheten jeg beveget meg i (Fruen holdt på å knekke sammen i latter, når jeg tok rennafart mot sensoren, samtidig som jeg entusiastisk forsøkte å peke på displayet på scopet).

Jeg tror faktisk dette er første gang jeg har hatt virk på første forsøk :)  (Normalen er 2-3 iterasjoner, der jeg utvider vokabularet og facepalm-skillsa kraftig etter hver test.)

Next up: Implementere firmware i Mynewt, som leser ut frekvens, konverterer signalet til m/s og sender dataene ut på eteren. (Nevnte jeg at Mynewt nå har laget en board support-pakke for EE-02 (0-dev branchen / telee02) ;))

Hvis du er nysgjerrig på LoRa eller det vi sysler med i Exploratory Engineering, så finner du mer info her:

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.