Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino aangedreven servicelift

Componenten en benodigdheden

Arduino Mega 2560
× 1
OpenBuilds Micro-limietschakelaar
× 4

Over dit project

Ontwerp en test een besturingssysteem voor een servicelift voor vier verdiepingen. De microcontroller (ATMega2560) wordt gebruikt om te bepalen welke contactor stroom moet leveren om de liftmotor te activeren om de lift omhoog of omlaag te bewegen door te controleren op welke verdieping de lift zich momenteel bevindt. Het besturingssysteem moet ook in staat zijn om de stroom naar de lift te stoppen wanneer deze de gewenste verdieping heeft bereikt. Er moet een integrale veiligheidsfactor worden geïmplementeerd om de liftdeur altijd te sluiten voordat u omhoog of omlaag gaat. Het besturingssysteem is in staat om te bepalen welke contactor moet worden gevoed om de lift naar de gewenste verdieping te brengen. Het systeem kan de deurmotor van de veiligheidslift besturen om de deur te sluiten wanneer de lift moet bewegen en de deur automatisch te openen wanneer deze de gewenste verdieping heeft bereikt.

Demovideo:

1.1 3-fasen motorbedrading

In deze toepassing wordt een driefasenmotor gebruikt, omdat hiervoor een krachtige motor nodig is die een zware belasting aankan. De driefasige motor wordt gevoed via de driefasige hoofdstroom. Voeding via de hoofdstroom via twee hoofdschakelaars. Wanneer de eerste contactor is ingeschakeld en de tweede contactor is uitgeschakeld, loopt de stroom door de eerste contactor naar de wikkeling van de motor die de motor in voorwaartse richting beweegt.

Wanneer de tweede contactor is ingeschakeld en de eerste contactor is uitgeschakeld, loopt de stroom door de tweede contactor naar de wikkeling van de motor die de motor in achterwaartse richting beweegt. Merk op dat de bedrading anders is voor de omgekeerde richting.

1.2 Vloerdetectie

Om te detecteren op welke verdieping de lift zich momenteel bevindt, wordt een eindschakelaar gebruikt. Terwijl de lift omhoog of omlaag beweegt, sluit en opent hij een eindschakelaar op elke verdieping. Wanneer de lift zich op een bepaalde verdieping bevindt, is de limietverdieping op die bepaalde verdieping gesloten, wat aan de microcontroller aangeeft op welke verdieping de lift zich bevindt. Terwijl de lift beweegt, gaat de eindschakelaar open en geeft de microcontroller aan dat de lift beweegt.

De overgang van laag naar hoog signaal geproduceerd door de eindschakelaar wanneer de lift door een verdieping beweegt, gebeurt in een fractie van een seconde en vaak te snel om door de microcontroller te worden gedetecteerd. De eindschakelaars zijn aangesloten op een 5V DC-voeding en de uitgang van de NO (normaal open) aansluiting is aangesloten op een IO-pin van de microcontroller. Vier eindschakelaars op vier verdiepingen sturen gegevens naar de microcontroller. Hierdoor kan de microcontroller bepalen op welke verdieping de lift zich bevindt door te controleren welke pin van laag naar hoog is gegaan. De overgang van de toestand van een eindschakelaar wordt weergegeven in het onderstaande diagram:

De lastige taak is om de microcontroller de overgang van laag naar hoog te laten detecteren. Er zijn twee methoden om dit probleem aan te pakken. De eerste methode is om te bepalen of een pin van een limietschakelaar HOOG wordt binnen de lusfunctie met behulp van een if-voorwaarde. Het programma controleert in wezen tijdens het uitvoeren van andere code altijd of een pin HOOG wordt. Dit neemt veel geheugen in beslag omdat het programma constant op zoek is naar een HOOG signaal van een eindschakelaarpin. Een ander probleem is dat het programma deze overgang soms mist omdat de lusfunctie een andere code aan het uitvoeren was terwijl een overgang plaatsvond. Om deze problemen te voorkomen, worden Interrupts gebruikt. Interrupts pauzeren in wezen de uitvoering van code en voeren een afzonderlijke functie uit wanneer aan een specifieke interruptvoorwaarde is voldaan. Dit is ideaal voor de liftoperatie. Wanneer een pin van een limietschakelaar van laag naar hoog gaat, wordt een onderbrekingsfunctie uitgevoerd en deze functie controleert of de lift zich op de huidige verdieping bevindt en stopt de lift of laat deze verder gaan. Aangezien het programma wordt gedwongen om de onderbrekingsfunctie uit te voeren wanneer een eindschakelaar wordt geschakeld, kan het systeem ervoor zorgen dat het programma het detecteren van een verdieping niet opzettelijk overslaat. De microcontroller die voor deze toepassing wordt gebruikt, is de Arduino Mega 2560 die 6 digitale pinnen heeft die kunnen worden gebruikt voor onderbrekingen, wat ideaal is voor gebruik op de vier verdiepingen. De eerste parameter voor attachInterrupt is een interruptnummer. Normaal gesproken moet u digitalPinToInterrupt(pin) gebruiken om de werkelijke digitale pin te vertalen naar het specifieke interruptnummer. Als u bijvoorbeeld verbinding maakt met pin 3, gebruikt u digitalPinToInterrupt(3) als de eerste parameter voor attachInterrupt. Het is ook belangrijk op te merken dat de functie delay() niet werkt binnen de functie die wordt uitgevoerd door de Interrupt Service Routine (ISR).

Het bovenstaande diagram laat zien hoe de eindschakelaars zijn aangesloten op de MCU. De pinnen in de MCU zijn verbonden via een pull-down weerstand. Deze weerstand trekt de pin van de MCU naar aarde om ervoor te zorgen dat een LAGE spanningswaarde wordt gelezen door de MCU wanneer de eindschakelaar open wordt gelaten. De weerstandsconfiguratie wordt weergegeven in het onderstaande diagram.

1.3 Motor omhoog en omlaag besturing

Twee 12V DC-relais worden gebruikt om wisselstroom naar de contactors van de motor te schakelen die de richting regelen (omhoog of omlaag). Het circuit dat is ontworpen met behulp van Multisim wordt weergegeven in het onderstaande diagram:

Het ene uiteinde van de spoelcontactor van beide relais is via een PNP-transistor verbonden met de 12V DC-voeding. De belangrijkste reden om dit te doen is om ervoor te zorgen dat de motor geen stroom krijgt totdat de liftdeur is gesloten. Zodra de liftdeur is gesloten, wordt de uitgangspin van de DoorSwitch naar de poort van de PNP-transistor naar aarde getrokken, zodat de PNP wordt ingeschakeld om de VCC-voeding aan beide relais te leveren. Daarom wordt het relais niet ingeschakeld, zelfs niet als het MotorUp- of MotorDown-signaal HOOG is. Het andere uiteinde van de relaisspoel wordt via een NPN-transistor naar aarde getrokken. Het MotorUp-signaal wordt gegenereerd door de MCU. Wanneer het MotorUp-signaal HOOG is, wordt de eerste NPN-transistor geactiveerd en trekt deze het andere spoelcontact naar aarde om het circuit te voltooien om de spoel van het omhoog-relais van stroom te voorzien om de motor van stroom te voorzien. Dezelfde methode wordt gebruikt om de neerwaartse relais te activeren. Redenen om transistors te gebruiken om de relais te schakelen zijn:

  • Beide relais hebben 12VDC-spoelen, daarom is het noodzakelijk om een ​​PNP-transistor te gebruiken om het hoge (12V) deel van de spoel te schakelen, aangezien de MCU slechts 5V kan produceren, wat niet genoeg is om de relaisspoel aan te zetten.
  • Transistors kunnen worden gebruikt om het relais in te schakelen door een minimale stroom van de MCU te gebruiken, aangezien weinig stroom door de basis van de transistor het activeert. Dit bespaart stroom in de MCU wanneer deze de relais moet schakelen.
  • Het isoleert ook de MCU van eventuele tegenstroom die terug kan vloeien naar de pin van de MCU die de MCU mogelijk kan beschadigen.

1.3.1 Flyback-diode voor extra bescherming

Een Flyback-diode is geïnstalleerd over de spoelcontacten van het relais om ervoor te zorgen dat de tegenstroom een ​​pad heeft om te stromen wanneer de spoel wordt in- en uitgeschakeld. Inductieve belastingen zoals een spoel in het relais veroorzaken plotselinge spanningspieken wanneer de voedingsstroom plotseling wordt onderbroken. Dit voegt extra bescherming toe aan de MCU. Het onderstaande diagram laat zien hoe een flyback-diode over de spoelcontactors van het relais moet worden aangesloten.

1.3.2 Controle gebruikersinvoer

De gebruiker regelt de bediening van de lift door middel van verdiepingsknoppen. Er zijn vier verdiepingsdrukknoppen, wanneer ingedrukt geeft de microcontroller aan dat de lift naar de gewenste verdieping moet worden gebracht.

Een drukknop die kort wordt ingedrukt, creëert een HOOG-signaal en vervolgens een LAAG-signaal wanneer de gebruiker de knop loslaat. De taak van de microcontroller is om een ​​HOOG signaal te identificeren van een verdiepingsknop die door de gebruiker wordt ingedrukt. Deze specifieke taak hoeft niet via een interrupt te worden afgehandeld. Zolang de gebruiker de knop lang genoeg ingedrukt houdt, kan de MCU het signaal van de knop registreren. De volgende taak van de microcontroller is om te beoordelen of de motor omhoog of omlaag moet worden gedraaid, afhankelijk van de invoer van de gebruiker en de huidige verdieping van de lift.

Met slimme programmering via microcontrollers kunnen we extra hardware elimineren die nodig zou zijn geweest als een systeem puur logisch en analoog zou zijn ontworpen. Het vorige systeem voor de lift vereiste een extra richtingsschakelaar, zoals weergegeven in het onderstaande diagram, werd gebruikt om het systeem in staat te stellen de richting van de lift te identificeren (omhoog of omlaag).

Maar door een algoritme te ontwerpen om de huidige verdieping van de lift in een variabele vast te houden en deze te vergelijken met de invoer van de gebruiker, kon het systeem de richtingsschakelaars volledig verwijderen om te bepalen in welke richting de lift moet bewegen om bij de gewenste vloer. Bijvoorbeeld:In het hierboven getoonde diagram Input en verdiepingsdetectie met MCU geeft de lift aan de MCU aan dat deze zich op de tweede verdieping bevindt via pin 3. Vervolgens voert de gebruiker in door op de knop op de vierde verdieping te drukken. De MCU ontvangt dit commando en vergelijkt de twee ingangen. Aangezien de invoer van de gebruiker, "4" groter is dan de invoer van de eindschakelaar, "2", stuurt de MCU een signaal via de MotorUp-pin om de transistor te activeren om het omhoog-relais van stroom te voorzien.

Naarmate de lift omhoog gaat, wordt de huidige verdiepingsvariabele in het programma bijgewerkt wanneer deze de derde verdieping bereikt. Zodra een eindschakelaar wordt geactiveerd, wordt deze vergeleken met de invoerwaarde van de gebruiker, in dit geval "4" en vergelijkt deze waarde opnieuw met de bijgewerkte huidige verdieping om te bepalen of de lift de gewenste verdieping heeft bereikt. Zodra de eindschakelaar van de vierde verdieping is geactiveerd, stelt de MCU vast dat de lift de vierde verdieping heeft bereikt en stuurt een LAAG-signaal via de signaalpen Motor omhoog om de stroomtoevoer naar de motor te stoppen en te voorkomen dat deze verder beweegt.

1.3.3 Isolatie van besturing van ingangen

Een andere belangrijke factor is om de DC-besturingszijde van de microcontroller te isoleren van AC-interferentie die de MCU via de ingangen van het systeem zou kunnen beïnvloeden. Een probleem waarmee ik werd geconfronteerd, aangezien ik aanvankelijk geen isolatiehardware had geïnstalleerd, werd AC-interferentie die afkomstig was van de metalen behuizing van de lift via de eindschakelaars naar de MCU overgebracht. Ook al werken de eindschakelaars op een aparte gelijkstroomvoeding, de input van de eindschakelaars wordt rechtstreeks naar de microcontroller gevoerd. Er treedt dan interferentie op wanneer de lift begint te bewegen en als gevolg van deze AC-interferentie is de MCU niet in staat om de verdieping van de lift correct te identificeren is bij. Om dit probleem tegen te gaan, werd voor elke ingang een Optocoupler gebruikt om de MCU te isoleren van interferentie van buitenaf.

Het doel van de optocoupler is om het ingangssignaal dat wordt gegenereerd door de vloereindschakelaar via een LED en fototransistor naar de MCU over te dragen. Wanneer de eindschakelaar gesloten is, wordt de LED ingeschakeld en het binnenkomende licht van de LED activeert de poort van de fototransistor, die vervolgens een HOOG-signaal naar de MCU zendt, waarbij de invoer van buitenaf en de MCU met succes worden geïsoleerd.

1.4 Prototype


Productieproces

  1. Lift
  2. Arduino Spybot
  3. FlickMote
  4. Zelfgemaakte tv B-Gone
  5. Hoofdklok
  6. Vind mij
  7. Arduino Power
  8. Tech-TicTacToe
  9. Arduino Quadruped
  10. Arduino aangedreven weerballon datalogger
  11. Arduino-joystick