Rotaattoriohjaus raspberryllä

Tarvikkeet:

1 kpl Raspberry Pi zero w 1.3 noin 30€
1 kpl 4 releen releohjain $3 https://www.aliexpress.com/item/33028719736.html
1 kpl MCP3008 AD-muunnin $2 https://www.aliexpress.com/item/32835252379.html
1 kpl virtalähde 230VAC-5VDC kiinasta $3 https://www.aliexpress.com /item/4000339996442.html
1 kpl sulakepesä miljoonalaatikosta
1 kpl piirilevykanta mcp3008:lle miljoonalaatikosta
1 kpl 32GB micro SD-kortti halpa-halli 7,90€

Rotaattorin ohjaus ennen asennusta yeasuun

Selitys software

Rasbperry pi:ssä on raspian buster käyttöjärjestelmä. Käyttäjä pi on vaihdettu rotator nimiseksi ja kohtihakemisto myös. Käyttäjän kotihakemistoon /home/rotator puretaan rotator-0.0.1.tar.gz paketti. Paketissa oleva ohjelmakoodi on javascriptiä. Se vaatii toimiakseen noden (sudo apt-get install nodejs raspi-gpio).

Nodelle pitää antaa oikeus käyttää alaportteja: sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/node

Softa käynnistetään automaattisesti bootissa systemd:llä. Sitä varten mukana unittscriptit. Ne laitetaan /etc/systemd/system/ hakemistoon. Sitten enabloidaan (systemctl enable setup-gpios ; systemctl enable rotator). gpio-init.sh kopioidaan /usr/local/bin/ hakemistoon. Ja sille suoritusoikeus chmod a+rx /usr/local/bin/gpio-init.sh

Raspberry käynnistyessä suoritetaan gpio-init.sh scprti joka asettaa pinnin 17 ja 27 output tilaan ja vetää jänniteet ylös. Tämä sen takia että releohjain käyttää kääntesitä logiikkaa (1 = normaalitila, 0 = rele vetää).

Samaan aikaan unittiscripti käynnistää rotator.js softan. Mutta node hidas käynnistymään raspberryssä. Voi mennä 30 sek ennen kuin softa on käynnissä.

Kun softa on päällä niin rotaattoriohjaukseen pääsee nettiselaimella http://raspberrypi.local/ tai raspberryn IP-ositteella.

Jos tulee virheitä niin ne näkyy /var/log/syslog tiedostossa.

Jos tulee ongelmia niin noden saa startattua käsin (sudo systemctl stop rotator; cd /home/rotator/rotator; node rotator.js). Silloin virheet näyy suoraan ruudulla.

Webbiselaimen lataama html koodi sisältää rotaattorin taustakuvan, neulan kuvan ja keskitapin kuvan. Ne on muutettu png tiedostosta base64 muotoon. Saattaa aiheuttaa hämmennystä.

Toimintaselitys HW

Raspberry Pi:ssä on paljon GPIO pinnejä. Niitä voidaan käyttää releiden ohjaamiseen. Otetaan kaksi GPIO pinniä 17 ja 27. Laitetetaan ne output tilaan. Toisella ohjataan vasempaan ja toisella oikealle. Releitä on neljä. Kun vasempaan tai oikean kumpi pinni aktoivituu, kaksi relettä vetää saman aikaisesti. Toinen releistä on suojarele joka katkaisee niin ettei ohjaus vasempaan ja oikealle voi olla päällä yhtäaikaa. Toinen rele on se joka painaa kääntönappia. Valmiita neljän releen kortteja saa kiinasta. Optoerotettuja ja maksaa muutaman euron kotipostilatikkoon tuotuna.

AD-muunnin luetaan mc3008 AD-muuntimella. Siinä on 8 AD-muunninta, mutta tähän tarpeeseen käytetään vain yhtä. Jännite pitää sovittaa vastauksilla niin että AD-muuntimelle tuleva jännite on 0-3.3v. Muutama sata kohm jännitejako. Silloin virtaa ei kulje tarpeettomasti ja häiritä rotaattorin normaalia toimintaa. Kun rotaattori käännetään jaetaan rajalle niin että saadaan suurin jännite, säädetään jännitejako niin että saadaan AD-muuntimesta suurin arvo raaka AD-arvo, noin 1023. Sitten kun mennään toiselle rajalle niin jännite tippuu ja rajalla on luultavasti lähellä nollaa. Minä tein kalibroinnin raaka-arvoilla 10 asteen välein. Otin ylös AD-arvot ja sitten sitä vastaavan todellisen suunnan. Laitoin summat numerot exceliin jossa sovitin toisen asteen käyrän pienimmän neliövirhesumman menetelmällä. Jos on rotaattorissa riittävän lineaarinen potikka niin tätä ei välttämättä tarvita. Kalibrointiarvot syötetään suoraan rotator.js ohjelmakoodiin raspberryssä. Mukana adc arvojen katsomiseen mcptest.js (cd /home/rotator/rotator/ ; node mcptest.js). HUOM! ohjelmakoodissa minulla on AD1 muunnin käytössä. Muuntimet alkaa AD0:sta. Eli käytän mcp3008 piirin toista muunninta. Mukana potikan_sovitus_mcp3008_kenpro.xlsx jolla voi sovitella käyrää kun arvot on mitattu. AD-muunntimet arvot heiluu aika paljon. Kun laittaa AD-muuntimeen pienen konkan niin tasoittaa arvoja hyvin. Itsellä muuaman mikrofaradin elko.
AD-muunnninhommassa kannattaa huomioida ylijännite. Minulta on hajonnut AD-muunnin kun ukonilma paukautti lähelle. Minulla ei ollut mitään suojaa siinä jännitejaon kaverina. En tiedä miten se kannattaisi tehdä.

Ohjelmakoodiin hardkoodatut raspberry gpiot

Raspberry PiPinniMCP3008Pinni
GPIO5 (cs)29CS/SHDN10
GPIO11 (clock)23CLK13
GPIO10 (mosi)19Din11
GPIO9 (miso)21Dout12
+3.3V1Vdd16
+3.3V17Vref15
GND34DGND9
GND39AGND14
GPIO17 releohjaimelle CW11
GPIO27 releohjainmelle CCW13
Tästä pääset ladattaviin tiedostoihin Freecad malli pohjalevystä, kicad kuva kytkentäkaaviosta, valokuvia, potikan sovitus, ohjaussofta, unittiscriptit…

15.12.2020 Kari Karvonen oh1kk@toimii.fi