Raspberry Pi rotaattoriojaus

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