Uudemman version löydät http://www.oh6ai.fi/tekniikka/rotaattoriohjaus-raspberrylla/
Arkistoversio 15.12.2020 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€ Pohjalevyn freecad malli 3D-tulostettu pohjalevy PLA Kytkentäkaavio Raspberry Pi Zero GPIO pinnijärjestys MCP 3008 pinnijärjestys 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äänteitä 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 vihreitä niin ne näkyy /var/log/syslog tiedostossa. Jos (kun) 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ä mcp:lle 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 & AD-arvo, 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ä neliövirhesumman menetelmällä. Jos on rotaattorissa on 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. Ohjelmakoodiin hardkoodatut raspberry gpiot Raspberry Pi Pinni MCP3008 Pinni GPIO5 (cs) 29 CS/SHDN 10 GPIO11 (clock) 23 CLK 13 GPIO10 (mosi) 19 Din 11 GPIO9 (miso) 21 Dout 12 +3.3V 1 Vdd 16 +3.3V 17 Vref 15 GND 34 DGND 9 GND 39 AGND 14 GPIO17 releohjaimelle CW 11 GPIO27 releohjainmelle CCW 13 Tästä pääset ladattaviin tiedostoihin Freecad malli pohjalevystä, kicad kuva kytkentäkaaviosta, valokuvia, potikan sovitus, ohjaussofta, unittiscriptit… 13.12.2020 Kari Karvonen oh1kk@toimii.fi