Inhoudsopgave:

Bedien apparaten uit de echte wereld met uw pc: 15 stappen (met afbeeldingen)
Bedien apparaten uit de echte wereld met uw pc: 15 stappen (met afbeeldingen)

Video: Bedien apparaten uit de echte wereld met uw pc: 15 stappen (met afbeeldingen)

Video: Bedien apparaten uit de echte wereld met uw pc: 15 stappen (met afbeeldingen)
Video: ELBERT HELPT BIJ EEN BEVALLING - TOPDOKS EXTRA 2024, November
Anonim
Bedien apparaten uit de echte wereld met uw pc
Bedien apparaten uit de echte wereld met uw pc

Deze Instructable laat je zien hoe je een pc en microcontroller kunt aansluiten. Deze demo zal de waarde van een pot of een analoge ingang detecteren en ook een servo besturen. De totale kosten bedragen minder dan $ 40 inclusief de servo. De servo zet een microschakelaar aan en vervolgens zet de microschakelaar een lamp aan. In een praktische toepassing zou de pot een temperatuursensor kunnen zijn en zou de servo een verwarming kunnen aanzetten. De servo kan worden vervangen door een relais of een andere vermogensregelaar. De picaxe is geprogrammeerd in een vereenvoudigde versie van basic en de interface maakt gebruik van VB. Net. Alle software is gratis beschikbaar. Een verwante Instructable laat zien hoe u twee microcontrollers via internet kunt koppelen

Stap 1: Verzamel de onderdelen

Verzamel de onderdelen
Verzamel de onderdelen

Onderdelenlijst: Picaxe 08M-chip verkrijgbaar bij vele bronnen, waaronder Rev Ed https://www.rev-ed.co.uk/picaxe/ (VK), PH Anderson https://www.panderson.com/ (VS) en Microzed https://www.microzed.com.au/ (Australië)Protoboard, servo, microschakelaar, 9V batterij, 4xAA batterijen en houder, tag strip, 10k weerstand, 22k weerstand, 33uF 16V condensator, 0.1uF condensator, 7805L laag vermogen 5V regelaar, 10k pot, draden (massieve kern telefoon/datakabel bijv. Cat5/6), 6V gloeilamp, D9 vrouwelijke aansluiting en deksel, 2 meter 3 (of 4) core datakabel, batterijclips Bovenstaande bedrijven verkopen ook USB naar seriële apparaten die handig zijn voor laptops die geen seriële poort hebben. Het is vermeldenswaard dat sommige USB-naar-seriële apparaten niet zo goed werken als andere en het is de moeite waard om er een te kopen bij een van de bovenstaande leveranciers, omdat ze zijn getest voor gebruik met picaxe-chips. Degene waarvan bekend is dat deze werkt, is https://www.rev-ed.co.uk/docs/axe027.pdf Natuurlijk, als uw computer een seriële poort heeft (of een oude seriële poortkaart), dan zal dit niet een probleem zijn.

Stap 2: Download en installeer sommige software

Sommige software downloaden en installeren
Sommige software downloaden en installeren

We hebben de VB. Net en de picaxe-controllersoftware nodig. VB. Net (Visual Basic Express) is beschikbaar op https://msdn2.microsoft.com/en-us/express/aa718406.aspxAls deze link niet werkt, zoek dan in Google voor: visual basic express download De picaxe-software is beschikbaar op https://www.rev-ed.co.uk/picaxe/U moet zich bij microsoft registreren om de download te krijgen - als dit een probleem is, gebruikt u een nep-e-mail of zoiets. Ik vond het eigenlijk nuttig om mijn echte e-mail te geven omdat ze af en toe updates sturen.

Stap 3: Bouw een downloadcircuit

Bouw een downloadcircuit
Bouw een downloadcircuit

Dit downloadcircuit maakt gebruik van een picaxe-chip, een paar weerstanden, een regelaar en een 9V-batterij. Meer informatie is beschikbaar in de picaxe-documentatie en dit zou maar een paar minuten moeten duren om te bouwen zodra alle onderdelen bij de hand zijn.

Ik zou ook kunnen toevoegen dat picaxes prima werken op 3 AA-batterijen. Een 5V gereguleerde voeding is handig voor analoge ingangen omdat de referentiespanningen niet veranderen, maar voor eenvoudige aan/uit-circuits is een gereguleerde voeding niet nodig. De 5V reg kan in deze situaties worden weggelaten.

Stap 4: Protoboard-indeling van het downloadcircuit

Protoboard-indeling van het downloadcircuit
Protoboard-indeling van het downloadcircuit

Deze foto toont de downloadkabel die eenvoudigweg een D9-stekker is en een paar meter van een meeraderige kabel. De meeste moderne pc's hebben een D9 seriële poortaansluiting. Een pc die vóór ongeveer 1998 is gebouwd, heeft mogelijk een 25-pins connector. Ik heb ongeveer 1 cm massieve kerndraad op het uiteinde van de flexibele draden gesoldeerd en hier omheen krimpkous gedaan - de massieve kerndraden gaan veel beter in een protoboard dan flexibele draden.

Stap 5: Download het Picaxe-programma

Download het Picaxe-programma
Download het Picaxe-programma

Klik op de blauwe pijl om te downloaden. Als het niet wordt gedownload, staan er enkele debugging-suggesties in de picaxe-handleiding. U kunt proberen een eenvoudig programma te downloaden om een led aan en uit te zetten om te controleren of de chip werkt. Dit programma doet niets totdat het is aangesloten op een pc, omdat het wacht tot de pc het iets stuurt. Als het goed wordt gedownload, werkt het en is de chip geprogrammeerd en de volgende stap is om de chip opnieuw te configureren als een seriële interface-chip.

Kopieer en plak de onderstaande code. Om het met kleursyntaxis te bekijken, kijk in View/Options/Editor. De kleurconventies zijn vergelijkbaar met VB. Net main:serin 3, N2400, ("Data"), b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13 readadc 1, b1' lees de pot en stuur deze terug serout 0, N2400, ("Data", b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13) selecteer case b0' lees databit b0 case <140' if <140 zet dan servo op één positie servo 2, 120 pauze 1000' pauzeer een seconde anders servo 2, 160 pauze 1000 endselect low 2' zet de servo uit want serin doet dit toch ga naar hoofd

Stap 6: Configureer het circuit opnieuw als een serieel interfacecircuit

Configureer het circuit opnieuw als een serieel interfacecircuit
Configureer het circuit opnieuw als een serieel interfacecircuit

Er zijn twee subtiele wijzigingen aangebracht in het picaxe-circuit. De 22k-weerstand die vroeger naar been 2 ging, gaat nu naar been 4. En been 2 is geaard. Het enige doel van been 2 is om programmeergegevens van de pc te ontvangen, dus als de chip eenmaal is geprogrammeerd, kan deze aan de grond worden vastgemaakt. Als je teruggaat naar het programmeren van de chip om bugs etc te corrigeren, koppel dan poot 2 los van de grond en sluit de 22k opnieuw aan op poot 2. De picaxe praat terug naar de pc via poot 7, dus dit hoeft niet te veranderen.

Er is een pot toegevoegd en de servo is toegevoegd. De servo is niet echt nodig en een led en een weerstand van 1k zouden prima werken en / of elk circuit dat je wilt aansluiten. Ik heb zojuist een servo gebruikt om te laten zien hoe het klikken op iets op een scherm iets echt kan laten bewegen. De servo werkt op zijn eigen voeding. Deze aparte voeding zou niet nodig zijn als de picax alleen de leds aan en uit zou zetten. De picaxe is klaar voor gebruik - nu hebben we wat VB-code nodig.

Stap 7: Schrijf wat VB-interfacecode

Schrijf wat VB-interfacecode
Schrijf wat VB-interfacecode

Nadat VB. Net is geïnstalleerd, voert u het uit en selecteert u Bestand/Nieuw project en selecteert u Windows-toepassing. U kunt aan het begin op Bestand/Alles opslaan klikken en opslaan waar u maar wilt en in de toekomst ofwel het project starten vanuit VB. Net of door op een.sln-bestand te klikken dat wordt gemaakt.

Stap 8: Ontwerp het VB. Net-formulier

Ontwerp het VB. Net-formulier
Ontwerp het VB. Net-formulier

VB maakt een nieuw leeg formulier met de naam Form1.vb. U kunt de naam hiervan nu of later wijzigen of het gewoon laten als Form1 als het project eenvoudig is. We laten het zoals het is. Om wat controle toe te voegen, moeten we de gereedschapskist openen die groen omcirkeld is. De toolbox kan worden geopend en gesloten wanneer dat nodig is - meestal is de eerste stap om de bedieningselementen toe te voegen, vervolgens de toolbox te sluiten en aan code te werken. Je kunt het altijd open laten staan, maar het neemt wel wat scherm in beslag.

Stap 9: een timer toevoegen

Een timer toevoegen
Een timer toevoegen

We hebben door de toolbox gescrolld en een timer geselecteerd. Dubbelklik op de timer om deze toe te voegen. Een afbeelding van een klok genaamd Timer1 verschijnt onderaan het scherm en aan de rechterkant worden de timereigenschappen gemarkeerd. U kunt deze bewerken of ze kunnen worden gewijzigd in de tekst van de code. We laten ze zoals ze zijn en veranderen ze in de hoofdtekst van de tekst.

Even terzijde, de toolbox ziet er een beetje angstaanjagend uit, maar er zijn er maar een paar nodig voor de meeste programma's - dit zijn onder meer knoppen, tekstvakken, labels, timers, afbeeldingsvakken, selectievakjes en keuzerondjes. Misschien een nieuw programma openen en een keer met een paar spelen.

Stap 10: voeg een paar knoppen toe

Voeg een paar knoppen toe
Voeg een paar knoppen toe

Klik op het knopgereedschap en teken de grootte van de knop op Form1. We hebben twee knoppen nodig, een fotokader en een label. Ga je gang en voeg deze toe - de volgende schermafbeelding toont deze allemaal getekend. Grootte en positie zijn niet belangrijk en je kunt ze later hernoemen als je wilt.

Stap 11: Formulier met alle toegevoegde bedieningselementen

Formulier met alle bedieningselementen toegevoegd
Formulier met alle bedieningselementen toegevoegd

Form1 is nu opgemaakt. Het vak naast Button2 is een klein fotovakje. Je kunt hier foto's in plaatsen maar we gaan het alleen gebruiken om aan te geven op welke knop is gedrukt door deze van rood naar groen te veranderen. Label1 geeft de picaxe-registers weer.

Stap 12: voeg wat code toe

Voeg wat code toe
Voeg wat code toe

Rechts omcirkeld in het groen zijn verschillende handige knoppen - de tweede van rechts is de View Code-knop en de rechterknop is de View Designer. In de praktijk gaat men bij het schrijven van code heen en weer tussen deze views. Als men zich in de Designer-modus bevindt, wordt door dubbelklikken op een object zoals een knop in het algemeen een plek in de codeweergave weergegeven om wat code toe te voegen of wordt er een toegevoegd aan het stuk code dat wordt uitgevoerd wanneer op de knop wordt gedrukt. Op deze manier wordt de programmastroom behoorlijk intuïtief - de gebruiker klikt op dingen en stukjes code worden uitgevoerd en verandert het scherm enzovoort. Voor onze doeleinden gaan we echter vals spelen en een hele plak werkende code plakken. De codeweergave zal Public Class Form1 hebben … End Class - markeer dit en verwijder het. Neem nu alle onderstaande code en plak deze in. Imports System. IOImports Strings = Microsoft. VisualBasic ' dus kan dingen als left(en right(for stringsPublic Class Form1Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer)' gebruiken voor slaapverklaringenDim WithEvents serialPort As New IO. Ports. SerialPort ' serial port declareDim PicaxeRegisters(0 To 13) As Byte ' registreert b0 tot b13Private Sub Form1_Load (ByVal afzender As Object, ByVal e As System. EventArgs) Behandelt Me. LoadTimer1. Enabled = True ' zet dit in code als standaard op false wanneer aangemaaktTimer1. Interval = 5000 ' 5 secondenPictureBox1. BackColor = Color. Red ' zet op positie 'red'Array. Clear(PicaxeRegisters, 0, 13) ' waarschijnlijk niet nodig als array gedeclareerd blankEnd SubPrivate Sub Timer1_Tick (ByVal afzender As System. Object, ByVal e As System. EventArgs) Verwerkt Timer1. Tick' timer tikt elke 5 seconden Bel SerialTxRx() ' talk to picaxeEnd SubSub SerialTxRx()Dim LabelStringte As String ' string naar GegevensP acket(0 To 17) As Byte ' hele datapakket "Data"+14 bytesDim i As Integer ' i is altijd handig voor lussen etcLabel1. Text = "" ' wis de tekst op het schermFor i = 0 To 3DataPacket(i) = Asc(Mid("Data", i + 1, 1)) ' voeg het woord "Data" toe aan packetNextFor i = 0 To 13DataPacket(i + 4) = PicaxeRegisters(i) ' voeg alle bytes toe aan packetNextIf serialPort. IsOpen ThenserialPort. Close() ' voor het geval het al is geopendEnd IfTryWith serialPort. PortName = "COM1" ' De meeste nieuwe computers staan standaard op com1, maar elke computer van vóór 1999 met een seriële muis zal waarschijnlijk standaard com2. BaudRate = 2400 ' 2400 is het maximum snelheid voor kleine picaxes. Parity = IO. Ports. Parity. None ' no parity. DataBits = 8 ' 8 bits. StopBits = IO. Ports. StopBits. One ' one stop bit. ReadTimeout = 1000 ' milliseconden dus time-out in 1 seconde if no response. Open() ' open de seriële poort. DiscardInBuffer() ' wis de invoerbuffer. Write (DataPacket, 0, 18) ' stuur het datapakket arrayCall Sleep (300) ' Minimaal 100 milliseconden om te wachten r gegevens komen terug en meer als de gegevensstroom langer is. Lees (DataPacket, 0, 18) ' lees terug in de datapakketarray. Sluiten () ' sluit de seriële poortEnd WithFor i = 4 To 17LabelString = LabelString + " " + Str(DataPacket(i)) ' verander in een tekst stringNextLabel1. Text = LabelString ' plaats de tekststring op de screenCatch ex As Exception'MsgBox(ex. ToString)' verwijder dit commentaar als je de daadwerkelijke foutmelding wilt zienLabel1. Text = " Timeout" ' geeft dit weer als picaxe niet is aangesloten etcEnd TryEnd SubPrivate Sub Button1_Click(ByVal afzender As System. Object, ByVal e As System. EventArgs) Handgrepen Button1. ClickPictureBox1. BackColor = Color. Red ' verander het vak in redPicaxeRegisters(0) = 120 ' een willekeurige waarde voor de servoEnd SubPrivate Sub Button2_Click (ByVal afzender As System. Object, ByVal e As System. EventArgs) Behandelt Button2. ClickPictureBox1. BackColor = Color. Green ' box naar greenPicaxeRegisters(0) = 160 ' willekeurige waarde voor de servoEnd SubEnd Class

Stap 13: Voer het programma uit

Voer het programma uit
Voer het programma uit

Schakel de picaxe in als deze niet is ingeschakeld. Start het vb.net-programma door op het groene driehoekje bovenaan het scherm in het midden te klikken. Rechts van de rundriehoek bevinden zich een pauzeknop en een stopknop, of het programma kan worden gestopt door rechtsboven op x te klikken of met File/Exit als je een menu hebt toegevoegd. Het programma kan desgewenst worden gecompileerd, maar laten we voor het debuggen het binnen VB laten draaien. De timer verzendt elke 5 seconden bytes, dus het duurt 5 seconden voordat het scherm verschijnt. Het label1 toont een dump van de 14 picaxe-registers. Deze worden naar de picaxe gestuurd en vervolgens weer teruggestuurd. Het is vrijwel zeker niet nodig om alle 14 te verzenden en uw code kan naar wens worden gewijzigd. De tweede byte met een waarde van 152 is de waarde van de pot die verandert van 0 in 255. Als op button1 wordt geklikt, wordt in de eerste byte een waarde van 120 verzonden en als op button2 wordt geklikt, verzendt het 160 en het picaxe-programma decodeert deze en beweegt de servo. Deze code laat zien hoe u gegevens verzendt en gegevens terugkrijgt van een microcontroller. De microcontroller kan allerlei apparaten aanzetten - ik heb er ongeveer 30 in huis met sprinklers, lichten, beveiliging, auto's op opritten detecteren, een aantal 3,6 kW-pompen aanzetten en het waterpeil in tanks meten. Picaxes kunnen in serie worden geschakeld op een gemeenschappelijke bus en kunnen zelfs met elkaar communiceren via radioverbindingen. Het is ook mogelijk om gegevens van websites te uploaden en te downloaden en dus internet te gebruiken om apparaten overal ter wereld aan te sluiten https://www.instructables. com/id/Worldwide-microcontroller-link-for-under-20/De volgende twee pagina's bevatten ook enkele voorbeelden van het gebruik van verschillende sensoren en het bedienen van verschillende apparaten. Dr James MoxhamAdelaide, Zuid-Australië

Stap 14: Invoerapparaten

Invoer apparaten
Invoer apparaten

De picaxe-programmer bevat enkele zeer nuttige helpbestanden, waarvan er één "Interfacing-circuits" wordt genoemd en deze is ook beschikbaar op https://www.rev-ed.co.uk/docs/picaxe_manual3.pdf. Dit laat zien hoe motoren, voel de omgeving en andere nuttige controle. Naast deze cirucits zijn er een paar die ik steeds weer gebruik. Temperatuur - de LM35-temperatuursensor produceert een spanning die rechtstreeks in een picaxe kan gaan en kan worden uitgelezen met een readadc- of readadc10-commando. Licht - een lichtafhankelijke weerstand heeft een weerstand die varieert van een paar honderd ohm in fel zonlicht tot meer dan 5 megohm in pikzwart. Meet de weerstand op het lichtniveau waarop je wilt schakelen en zet de LDR in serie met een weerstand van ongeveer dezelfde waarde. Ik wilde bijvoorbeeld de lichten detecteren van een auto die de carport binnenrijdt om wat lichten aan te doen. De weerstand was ongeveer 1M van indirect licht, dus ik heb een 1M in serie gezet met de LDR. Schakelaar - sommige schakelaars schakelen tussen 5V en 0V (een enkelpolige schakelaar met dubbele worp), maar sommige gaan gewoon aan en uit. Als een schakelaar wordt ingeschakeld, kan deze 5V naar een picaxe-chip sturen, maar als deze uit staat, zou de picaxe-pin 'zwevend' zijn en elke waarde kunnen hebben. Deze schakeling laat zien hoe de ingang naar de aarde wordt getrokken als de schakelaar is uitgeschakeld. Dit is het circuit dat voor de meeste drukknopschakelaars moet worden gebruikt. Potentiomter - een goede ouderwetse knop. Draai aan de knop en lees de spanning in de chip af. Er zijn allerlei andere elektronische apparaten die een spanning van 0-5V creëren of eenvoudig kunnen worden geconfigureerd om dit te doen. Voorbeelden zijn magnetische sensoren, vochtigheid, snelheid, aanraking, infrarood licht, druk, kleur en geluid. Sensoren kosten over het algemeen slechts een paar dollar per stuk.

Stap 15: Apparaten bedienen

Apparaten bedienen
Apparaten bedienen

Het picaxe-helpbestand bevat een geweldige uitleg over het besturen van motoren en lichten. Daarnaast vind ik dat er een paar circuits zijn die ik steeds weer gebruik. De eerste is een eenvoudige transistorschakeling. Een picaxe-chip kan maximaal 20 mA per pin inschakelen, wat goed is voor het inschakelen van een LED, maar niet veel anders. Een 547-transistor verhoogt de stroom tot 100mA, wat goed is voor kleine gloeilampen. Het tweede circuit toont een mosfet. Mosfets hebben vrijwel geen stroom nodig om ze aan te drijven - alleen volt, zodat ze direct kunnen worden bestuurd door een picaxe. Er zijn allerlei soorten mosfets beschikbaar, maar mijn voorkeur gaat uit naar de BUK555 60B https://www.ortodoxism.ro/datasheets/philips/BUK555-60A.pdf Het kan direct worden aangedreven vanaf 5V (in tegenstelling tot sommige die 10V nodig hebben) maar het belangrijkste voordeel is dat het een extreem lage weerstand heeft wanneer het is ingeschakeld - 0,045 ohm, wat niet veel meer is dan de weerstand van de draden die je erop zou aansluiten. Dit betekent dat het niet heet wordt bij behoorlijk hoge belastingen, wat energie bespaart en ook bespaart op de kosten van het koellichaam. Als voorbeeld het besturen van een belasting van 5 ampère zoals een autokoplamp; watt = stroom in het kwadraat x weerstand, dus W = 5 * 5 * 0,045 = 1,12 watt waarvoor alleen een koellichaam nodig is, zoals een vierkant stuk dun aluminium van 1 inch. Het derde circuit toont een relais. Er zijn verschillende parameters voor alle relais - de spoelspanning, spoelweerstand en de belastingsspanning en stroom. Een relais kan bijvoorbeeld een 12V-spoel hebben met een spoelstroom van 30mA, een spoelweerstand van 400 ohm en kan tot 240V bij 1 ampère aansturen. De spoelstroom is meer volt en ampère dan een picaxe kan leveren, dus we gebruiken het transistorcircuit om de spoel te schakelen. Er is ook een diode meegeleverd - deze onderdrukt de EMF aan de achterkant wanneer het relais wordt uitgeschakeld. Back EMF is wat de vonk voor een bougie creëert, dus je wilt deze hoge spanningen nergens in een circuit. De contacten hebben een maximale stroom en volt - de stroom kan een paar ampère zijn en de volt is vaak 240V, dus het schakelen van 12V of 24V zal ruim binnen bereik zijn. Als je onervaren bent met elektronica speel dan niet met netspanningen. Er zijn ook kleine relais die spoelspanningen hebben van 5V of 6V. Voor deze relais heeft u misschien geen aparte 12V-voeding nodig, maar let gewoon op de spoelweerstand, aangezien veel van deze een stroomafname hebben van meer dan 100 mA. Als dat zo is en u een 78L05 100mA 5V regelaar gebruikt, wilt u deze misschien wijzigen in een 7805 regelaar die tot 1 ampère kan leveren. Relais zijn met name handig voor het schakelen van AC - bijv. 24VAC tuinsproeiersolenoïdes, 12VAC tuinverlichting en in elektrisch lawaaierige omgevingen zoals een auto. Ze zijn ook handig voor het regelen van grote belastingen, bijv. een picaxe die 20mA levert bij 5V = 0,1W die een transistor van 12V bij 100mA=1,2W stuurt naar een relais 24V 100mA =2,4W naar een contactor die een pomp van 3600W aanstuurt. Als je het vermogen op die manier wilt regelen, laat dan een elektricien een schakelkast aansluiten en geef je twee draden die eruit komen (spoeldraden voor een 12V-relais) die je kunt bedienen. Op deze manier kan de elektricien zich aftekenen op de powerbox en kunt u alle elektronica doen zonder dat u zich zorgen hoeft te maken over elektrocutie. Een ander gebruik voor relais is een omgekeerde besturing voor een motor. Met behulp van pulsbreedtemodulatie in een mosfet kunt u de snelheid van een DC-motor regelen en met een DPDT-vermogensrelais kunt u de richting veranderen. Dit is een eenvoudige manier om grote motoren te besturen, zoals die worden gebruikt in 'robotoorlogen'. Plaats een reactie als je hulp nodig hebt bij het bouwen van iets.

Aanbevolen: