1. aprila, 2020

Naprava za samodejno polnjenje steklenic in kozarcev z Arduinom

cd 300x62 - Naprava za samodejno polnjenje steklenic in kozarcev z ArduinomCircuit Digest
Avtor: Ashish Choudhary
2020_284_51

Avtomatski stroji za polnjenje steklenic se najpogosteje uporabljajo v industriji pijač in brezalkoholnih pijač. Ti stroji uporabljajo tekoči trak, ki je ekonomičen in hiter način polnjenja steklenic. Večinoma se za krmiljenje delovanja avtomatskih naprav za polnjenje steklenic uporabljajo programirljivi logični krmilniki (PLC), lahko pa naredimo čisto preprost in vsestransko uporaben polnilnik za steklenice tudi z Arduinom!

Za opravljanje te naloge ga bomo sprogramirali tako, da naprava steklenico samodejno zazna s pomočjo IR ali ultrazvočnega senzorja in začne polnjenje steklenice tako, da na polnilnem mestu za določen čas ustavi transportni trak. Nato spet premakne tekoči trak in ga znova ustavi, ko IR senzor zazna naslednjo steklenico.

Naša naloga je izdelava prototipa naprave za avtomatsko polnjenje steklenic z uporabo ploščice Arduino Uno, tekočega traku, magnetnega ventila, IR senzorja in koračnega motorja. Hitrost tračnega transporterja je konstantna in jo lahko za tekoče delovanje naprave nastavimo s spreminjanjem hitrosti vrtenja pogonskega koračnega motorja. Koračni motor bo gnal tekoči trak toliko časa, dokler IR senzor ne bo zaznal prisotnosti steklenice na traku. IR senzor smo uporabili kot zunanji prožilnik prekinitvene funkcije. Kadar IR senzor na svojem izhodu z visokim logičnim nivojem pošlje Arduinu prožilni signal, bo ta ustavil motor in vklopil magnetni ventil. V programski kodi za polnjenje steklenic je tudi že vnesena predvidena zakasnitev, to je čas, ki je potreben, da se steklenica napolni do vrha. Arduino bo v času polnjenja steklenice ustavil koračni motor in vklopil elektromagnetni ventil, prek katerega se bo tekočina pretakala v steklenico. Ko bo nastavljen čas potekel, bo Arduino izklopil magnetni ventil za polnjenje (pretakanje tekočine) in transportni trak se bo začel spet premikati, tako da bo mogoče (zaznati in) napolniti naslednjo steklenico, ki bo odložena na trak in jo bo na polnilnem mestu zaznal IR senzor.

Doslej smo že večkrat uporabljali Arduino ploščico skupaj z elektromagnetnim ventilom, IR senzorjem in koračnim motorjem, zato vam lahko priporočim obisk spodnjih povezav, če bi želeli izvedeti več podrobnosti o osnovnem povezovanju Arduino ploščice s temi komponentami.

Arduino in Elektromagnetni ventil: https://circuitdigest.com/microcontroller-projects/how-to-control-solenoid-valve-using-arduino
Arduino in IR Senzor: https://circuitdigest.com/microcontroller-projects/ir-controlled-dc-motor-using-arduino
Arduino in koračni motorji: https://circuitdigest.com/microcontroller-projects/arduino-stepper-motor-control-tutorial

  • Potrebovali bomo naslednje komponente:
  • Arduino Uno
  • Koračni motor (Nema17)
  • Rele
  • Solenoidni ventil
  • IR senzor
  • Motorni pogon A4988
  • Akumulator

Ob tem bo morda koristen tudi podatek o »NEMA« označevanju velikosti motorjev in za nekaj najpogostejših velikosti najdete podatke na sliki 2.

Oznake temeljijo na Inčih in izražajo velikost (zunanjo dimenzijo, stranico ‘a’) kvadratne prirobnice motorja.

Shema vezja
Na sliki 3 so narisane povezave med komponentami sistema za samodejno polnjenje steklenic, ki ga v našem primeru krmilimo kar z Arduinom.

Za risanje medsebojnih povezav na sliki 3 sem uporabil program Fritzing. V tem vezju je magnetni ventil povezan z Arduinom prek relejskega modula, gonilni modul A4988 pa se uporablja za krmiljenje koračnega motorja. Za dodatne informacije o gonilnem modulu A4988 za Nema17 koračne motorje lahko sledite tem navodilom: https://circuitdigest.com/microcontroller-projects/controlling-nema-17-stepper-motor-with-arduino-and-a4988-stepper-driver-module

Vhodni priključek relejskega modula je povezan na priključek 7 Arduino ploščice. Priključka za smer vrtenja in takt korakov modula A4988 sta povezana s priključkoma 2 in 4 na Arduino ploščici. V tem projektu se IR senzor uporablja kot zunanji vir prekinitev Arduino krmilnika. Pri Arduino Uno sta digitalna priključka 2 in 3 namenjena priključitvi zunanjih virov prekinitev, zato izhodni priključek IR senzorja priključite na 3 priključek Arduina. Elektromagnetni ventil se napaja iz 24 V napetostnega vira, koračni motor pa iz 12 V.

Arduino program za samodejno polnjenje steklenic
Celoten program tega sistema za samodejno polnjenje steklenic z uporabo Arduina je zapisan na koncu tega članka. Tukaj bom razložil le nekaj najpomembnejših vrstic.

Program začnemo z vključitvijo knjižnice za koračni motor. Knjižnico koračnega motorja lahko prenesete s tega spletnega mesta: https://github.com/arduino-libraries/Stepper
Nato določite število korakov za en poln vrtljaj vašega izbranega koračnega motorja. Za NEMA 17 je to 200 korakov za en vrtljaj.

#include <Stepper.h>
#define STEPS 200

Določite priključka na Arduinu, na katere sta priključena signala proti modulu gonilnika motorja in sicer za takt za hitrost korakov in smer vrtenja. Ker je motor povezan preko gonilnega modula, določite vrsto vmesnika za motor kot Type1.

Stepper stepper(STEPS, 2, 4);
#define motorInterfaceType 1
Set the stepper motor speed.
stepper.setSpeed(500);

Priključke za rele, takt korakov in smer vrtenja koračnega motorja določimo kot izhode.

pinMode(relay,OUTPUT); 
pinMode(4,OUTPUT);
pinMode(2,OUTPUT);

Sintaksa za nastavitev zunanje prekinitve pri Arduinu je podana spodaj:

attachInterrupt(digitalPinToInterrupt(pin),
ISR, mode);

Pomen:

  • digitalPinToInterrupt (pin): Uporablja se za določitev fizičnega priključka na Arduinu, na katerega je priključena zunanja prekinitev. Pri Arduinu Uno sta priključka za zunanje prekinitve označena s pin 2 in pin 3.
  • ISR: To je ime funkcije, ki se mora izvesti, ko pride do zunanje prekinitve.
  • Način: Vrsta prehoda med logičnimi nivoji, ki bodo sprožili prekinitveni protokol, na primer: padajoči rob, rastoči rob signala itd.

Več podobnosti o prekinitvenih rutinah na Arduinu si lahko ogledate na spletni strani: https://circuitdigest.com/microcontroller-projects/arduino-interrupt-tutorial-with-examples

V funkciji attachInterrupt () je določeno, da je za zaznavanje zunanje prekinitve izbran priključek 3, izvajanje prekinitvene funkcije IR_detected pa se pokliče vsakič, ko IR senzor spremeni svoje stanje iz LOW v HIGH (narašča), torej ob naraščajočem robu signala.

attachInterrupt(digitalPinToInterrupt(3),
IR_detected,HIGH);

void IR_detected () je prekinitvena funkcija (ISR), ki se izvede, ko IR senzor na svojem izhodu da visok logični nivo. Ko je torej izhod iz IR senzorja na visokem nivoju, ta funkcija še nekaj korakov poganja koračni motor, nato pa ga zaustavi in vklopi magnetni ventil.

void IR_detected() { 
stepper.step(150);
digitalWrite(relay,HIGH);
stepper.step(0);

Zdaj lahko končno naložite programsko kodo v Arduino tako, da ga povežete s prenosnikom. Fotografiji prikazujeta naš prototip za sistem samodejnega polnjenja steklenic, v vlogi krmilnika tega sistema pa je seveda Arduino. Na koncu članka na spletni srani avtorja boste našli tudi predstavitveni video izrezek delovanja opisanega prototipa.

Povzeto po: https://circuitdigest.com/microcontroller-projects/automatic-bottle-filling-system-using-arduino

https://circuitdigest.com
Tags: