Innehållsförteckning:

Styr verkliga enheter med din dator: 15 steg (med bilder)
Styr verkliga enheter med din dator: 15 steg (med bilder)

Video: Styr verkliga enheter med din dator: 15 steg (med bilder)

Video: Styr verkliga enheter med din dator: 15 steg (med bilder)
Video: Bygga en dator - så här gör du! 2024, November
Anonim
Styr verkliga enheter med din dator
Styr verkliga enheter med din dator

Denna instruktionsbok visar hur du kopplar en dator och en mikrokontroller. Denna demo känner av värdet på en kruka eller någon analog ingång och styr även en servo. Total kostnad är under $ 40 inklusive servon. Servon tänder en mikrobrytare och sedan slår mikrobrytaren på en lampa. I en praktisk tillämpning kan potten vara en temperatursensor och servon kan slå på en värmare. Servon kan bytas ut mot ett relä eller annan effektregulator. Picaxen är programmerad i en förenklad version av basic och gränssnittet använder VB. Net. All programvara är tillgänglig gratis. En relaterad instruerbar visar hur man länkar två mikrokontroller via internet

Steg 1: Samla delarna

Samla delarna
Samla delarna

Dellista: Picaxe 08M-chip tillgängligt från många källor, inklusive Rev Ed https://www.rev-ed.co.uk/picaxe/ (Storbritannien), PH Anderson https://www.phanderson.com/ (USA) och Microzed https://www.microzed.com.au/ (Australien) Protoboard, servo, mikrobrytare, 9V batteri, 4xAA batterier och hållare, taglist, 10k motstånd, 22k motstånd, 33uF 16V kondensator, 0.1uF kondensator, 7805L låg effekt 5V regulator, 10k gryta, ledningar (telefon/datakabel med fast kärna, t.ex. Cat5/6), 6V glödlampa, D9 hona och hölje, 2 meter med 3 (eller 4) kärndatatråd, batteriklämmor Ovanstående företag säljer också USB till seriella enheter som är användbara för bärbara datorer som inte har en seriell port. Det är värt att notera att vissa USB till seriella enheter inte fungerar lika bra som andra och det är värt att skaffa en från en av ovanstående leverantörer eftersom de har testats för användning med picaxe -chips. Den som är känd för att fungera är https://www.rev-ed.co.uk/docs/axe027.pdf Naturligtvis, om din dator har en seriell port (eller ett gammalt seriellt portkort) kommer detta inte vara en fråga.

Steg 2: Ladda ner och installera viss programvara

Ladda ner och installera lite programvara
Ladda ner och installera lite programvara

Vi behöver VB. Net och picaxe-kontrollprogramvaran. VB. Net (Visual Basic Express) är tillgängligt från https://msdn2.microsoft.com/en-us/express/aa718406.aspxOm denna länk inte fungerar, sök sedan i Google för: visual basic express -nedladdning Picaxe -programvaran är tillgänglig från https://www.rev-ed.co.uk/picaxe/Du måste registrera dig hos Microsoft för att ladda ner - om detta är ett problem använder du en falsk e -post eller något. Jag tyckte faktiskt att det var bra att ge min riktiga e -post när de skickar uppdateringar ibland.

Steg 3: Bygg en nedladdningskrets

Bygg en nedladdningskrets
Bygg en nedladdningskrets

Denna nedladdningskrets använder ett picaxe -chip, ett par motstånd, en regulator och ett 9V -batteri. Mer information finns i picaxe -dokumentationen och detta bör bara ta några minuter att bygga när alla delar är tillgängliga.

Jag kan också tillägga att picaxer körs lyckligt på 3 AA -batterier. En 5V reglerad matning är användbar för att köra analoga ingångar eftersom referensspänningarna inte ändras, men för enkla på/av -kretsar behövs ingen reglerad matning. 5V reg kan utelämnas i dessa situationer.

Steg 4: Protoboard -layout för nedladdningskretsen

Protoboard -layout för nedladdningskretsen
Protoboard -layout för nedladdningskretsen

Detta foto visar nedladdningskabeln som helt enkelt är en D9 -kontakt och ett par meter med en flerkärnig kabel. De flesta moderna datorer har en D9 seriell portanslutning. En dator som byggdes före 1998 kan ha en 25 -polig kontakt. Jag lödde cirka 1 cm massiv kärntråd på änden av de flexibla trådarna och satte sedan värmekrymp runt detta - de massiva kärntrådarna går in i ett protoboard mycket bättre än flexibla trådar.

Steg 5: Ladda ner Picaxe -programmet

Ladda ner Picaxe -programmet
Ladda ner Picaxe -programmet

Klicka på den blå pilen för att ladda ner. Om det inte laddas ner finns det några felsökningsförslag i picaxe bruksanvisning. Du kan försöka ladda ner ett enkelt program för att slå på och stänga av en lysdiod för att kontrollera att chipet fungerar. Detta program som det gör ingenting förrän det är anslutet till en dator eftersom det väntar på att datorn skickar något. Om det laddas ner ok fungerar det och chipet är programmerat och nästa steg är att omkonfigurera chipet som ett seriellt gränssnittschip.

Kopiera och klistra in koden nedan. För att se den med färgsyntax, titta i Visa/Alternativ/Editor. Färgkonventionerna liknar VB. Net main: serin 3, N2400, ("Data"), b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13 readadc 1, b1 'läs potten och skicka sedan tillbaka serout 0, N2400, ("Data", b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13) välj fall b0 'läs databit b0 fall <140' om <140 ställ sedan in servo i ett läge servo 2, 120 paus 1000 'paus en sekund annars servo 2, 160 paus 1000 slutvälj låg 2' stäng av servon då serin gör detta ändå gå till main

Steg 6: Konfigurera om kretsen som en seriell gränssnittskrets

Konfigurera om kretsen som en seriell gränssnittskrets
Konfigurera om kretsen som en seriell gränssnittskrets

Två subtila ändringar har gjorts i picaxekretsen. 22k -motståndet som brukade gå till ben 2 går nu till ben 4. Och ben 2 har jordats. Det enda syftet med etapp 2 är att ta emot programmeringsdata från datorn så att när chipet är programmerat kan det knytas till marken. Om du går tillbaka till att programmera chipet för att korrigera buggar osv, koppla sedan bort ben 2 från marken och återanslut 22k till ben 2. Picaxen talar tillbaka till datorn via ben 7 så detta behöver inte ändras.

En kruka har lagts till och servon har lagts till. Servon är egentligen inte nödvändig och en LED och ett 1k motstånd skulle fungera bra och/eller vilken krets du vill ansluta. Jag använde bara en servo för att visa hur ett klick på något på en skärm kan få något att röra sig. Servon drivs av egen strömförsörjning. Denna separata strömförsörjning skulle inte behövas om picaxen bara slog på och av lysdioder. Picaxen är klar att gå - nu behöver vi lite VB -kod.

Steg 7: Skriv lite VB -gränssnittskod

Skriv lite VB -gränssnittskod
Skriv lite VB -gränssnittskod

När VB. Net är installerat kör det och välj Arkiv/Nytt projekt och välj Windows -program. Du kan klicka på Arkiv/Spara alla direkt i början och spara till var du vill och sedan i framtiden antingen starta projektet från VB. Net eller genom att klicka på en.sln -fil som kommer att skapas.

Steg 8: Utforma VB. Net -formuläret

Utforma VB. Net -formuläret
Utforma VB. Net -formuläret

VB skapar ett nytt tomt formulär som heter Form1.vb. Du kan ändra namnet på detta nu eller senare eller bara lämna det som Form1 om projektet är enkelt. Vi kommer att lämna det som det är. För att lägga till lite kontroll måste vi öppna verktygslådan som är inringad i grönt. Verktygslådan kan öppnas och stängas när det behövs - vanligtvis är det första steget att lägga till kontrollerna och sedan stänga verktygslådan och arbeta med kod. Du kan låta den vara öppen hela tiden men det tar lite skärm.

Steg 9: Lägg till en timer

Lägg till en timer
Lägg till en timer

Vi har rullat ner i verktygslådan och valt en timer. Dubbelklicka på timern för att lägga till den. En bild av en klocka som heter Timer1 kommer att visas längst ner på skärmen och över till höger markeras timeregenskaperna. Du kan redigera dessa eller de kan ändras i kodens texttext. Vi kommer att lämna dem som de är och ändra dem i texten.

För övrigt ser verktygslådan lite skrämmande ut, men bara några få behövs för de flesta program - dessa inkluderar knappar, textrutor, etiketter, timers, bildrutor, kryssrutor och radioboxar. Kanske öppna ett nytt program och spela med några någon gång.

Steg 10: Lägg till ett par knappar

Lägg till ett par knappar
Lägg till ett par knappar

Klicka på knappverktyget och rita knappens storlek på Form1. Vi kommer att behöva två knappar, en bildruta och en etikett. Fortsätt och lägg till dessa - nästa skärmdump visar allt detta. Storlek och position är inte viktigt och du kan byta namn på dem senare om du vill.

Steg 11: Formulär med alla kontroller tillagda

Formulär med alla kontroller tillagda
Formulär med alla kontroller tillagda

Form 1 är nu upplagd. Lådan bredvid Button2 är en liten bildruta. Du kan lägga in bilder i detta men vi kommer bara att använda det för att indikera vilken knapp som har tryckts genom att ändra den från rött till grönt. Etikett1 visar picaxe -registren.

Steg 12: Lägg till lite kod

Lägg till lite kod
Lägg till lite kod

Över till höger inringat i grönt finns flera användbara knappar - den andra från höger är knappen View Code och den högra knappen är View Designer. I praktiken går man fram och tillbaka mellan dessa åsikter när man skriver kod. I allmänhet om man är i Designer -läge dubbelklickar man på ett objekt, till exempel en knapp, visas en plats i kodvyn för att lägga till en kod eller tar en till den kodbit som körs när knappen trycks in. På så sätt blir programflödet ganska intuitivt - användaren klickar på saker och bitar av kod som körs och ändrar skärmen och så vidare. För våra syften kommer vi dock att fuska och klistra in en hel platta med arbetskod. Kodvyn kommer att ha Public Class Form1 … End Class - markera detta och ta bort det. Ta nu all koden nedan och klistra in den i. Imports System. IOImports Strings = Microsoft. VisualBasic 'så kan du använda saker som vänster (och höger (för stringsPublic Class Form1Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer)' för sömnutlåtanden Dim WithEvents serialPort As New IO. Ports. SerialPort 'seriell port deklareraDim PicaxeRegisters (0 To 13) As Byte' register b0 to b13Private Sub Form1_Load (ByVal sender As Object, ByVal e As System. EventArgs) Handles Me. LoadTimer1. E = True 'sätt detta i koden som standard till falskt när skapatTimer1. Interval = 5000' 5 sekunderPictureBox1. BackColor = Color. Red 'ställt till position' red'Array. Clear (PicaxeRegisters, 0, 13) 'behövs troligen inte som arraydeklarerad blankEnd SubPrivate Sub Timer1_Tick (ByVal sender As System. Object, ByVal e As System. EventArgs) Hanterar Timer1. Tick 'timer markerar var 5: e sekund Call Call SerialTxRx ()' talk to picaxeEnd SubSub SerialTxRx () Dim LabelString As String 'string to display byte valuesD DataP acket (0 till 17) Som Byte hela datapaketet "Data" +14 bytesDim i As Integer 'i är alltid användbart för slingor etcLabel1. Text = ""' rensa texten på skärmen För i = 0 Till 3DataPacket (i) = Asc (Mid ("Data", i + 1, 1)) 'lägg till ordet "Data" i packetNextFor i = 0 Till 13DataPacket (i + 4) = PicaxeRegisters (i)' lägg till alla byte till packetNextFor i = 0 Till 13DataPacket (i + 4) = PicaxeRegisters (i) 'lägg till alla byte i packetNextFf i serialPort. IsOpen ThenserialPort. Close () 'ifall redan öppnatEnd IfTryWith serialPort. PortName = "COM1"' De flesta nya datorer är standard på com1 men alla datorer från 1999 med en seriell mus kommer förmodligen att vara com2. BaudRate = 2400 '2400 är max hastighet för små picaxes. Parity = IO. Ports. Parity. None 'no parity. DataBits = 8' 8 bits. StopBits = IO. Ports. StopBits. One 'one stop bit. ReadTimeout = 1000' millisekunder så time out på 1 sekund om inget svar. Öppna () 'öppna seriell port. DiscardInBuffer ()' rensa inmatningsbufferten. Skriv (DataPacket, 0, 18) 'skicka datapacket arrayCall Sleep (300)' 100 millisekunder minst för att vänta fo r data för att komma tillbaka och mer om dataströmmen är längre. Läs (DataPacket, 0, 18) 'läs tillbaka i datapaketets array. Close ()' stäng den seriella porten End WithFor i = 4 To 17LabelString = LabelString + "" + Str (DataPacket (i)) 'förvandlas till en text stringNextLabel1. Text = LabelString' lägg textsträngen på screenCatch ex As Exception'MsgBox (ex. ToString) 'kommentera detta om du vill se det faktiska felmeddelandetLabel1. Text = " Timeout "'visar detta om picaxe inte är ansluten etcEnd TryEnd SubPrivate Sub Button1_Click (ByVal sender As System. Object, ByVal e As System. EventArgs) Handles Button1. ClickPictureBox1. BackColor = Color. Red' ändra rutan till redPicaxeRegisters (0) 120 'ett godtyckligt värde för servoEnd SubPrivate Sub Button2_Click (ByVal -avsändare som System. Object, ByVal e As System. EventArgs) Hanterar Button2. ClickPictureBox1. BackColor = Color. Green' ruta till greenPicaxeRegisters (0) = 160 'godtyckligt värde för servoEnd SubEnd Class

Steg 13: Kör programmet

Kör programmet
Kör programmet

Slå på picaxen om den inte startas. Kör programmet vb.net genom att klicka på den gröna triangeln högst upp på skärmen nära mitten. Till höger om körtriangeln finns en pausknapp och en stoppknapp, eller så kan programmet stoppas genom att klicka högst upp till höger x eller med Arkiv/Avsluta om du har lagt till en meny. Programmet kan kompileras om du vill, men för felsökning, låt det vara igång inom VB. Timern skickar ut byte var 5: e sekund så det tar 5 sekunder för displayen att komma upp. Etiketten1 visar en dumpning av de 14 picaxregistren. Dessa skickas till picaxen och skickas sedan tillbaka igen. Det är nästan inte nödvändigt att skicka alla 14 och din kod kan ändras för att passa. Den andra byten med värdet 152 är värdet på potten som ändras från 0 till 255. Om knappen 1 klickas skickar det ett värde på 120 i den första byten och om knappen2 klickas skickar den 160 och picaxeprogrammet avkodar dessa och flyttar servon. Denna kod visar hur man skickar data och får tillbaka data från en mikrokontroller. Mikrokontrollern kan slå på alla typer av enheter - jag har cirka 30 runt mitt hus som kör sprinkler, lampor, säkerhet, upptäcker bilar i uppfartar, slår på ett antal 3,6 kW pumpar och känner av vattennivån i tankar. Picaxer kan Daisychained på en gemensam buss och kan till och med kommunicera med varandra via radiolänkar. Det är också möjligt att ladda upp och ladda ner data från webbplatser och därmed använda internet för att ansluta enheter var som helst i världen https://www.instructables. com/id/Worldwide-microcontroller-link-for-under-20/De följande två sidorna innehåller också några exempel på hur man använder olika sensorer och hur man styr olika enheter. Dr James MoxhamAdelaide, South Australia

Steg 14: Inmatningsenheter

Inmatningsapparater
Inmatningsapparater

Picaxe-programmeraren innehåller några mycket användbara hjälpfiler, varav en kallas "gränssnittskretsar" och den är också tillgänglig på https://www.rev-ed.co.uk/docs/picaxe_manual3.pdfDetta visar hur man styr motorer, känna miljön och annan användbar kontroll. Förutom dessa ciruciter finns det några som jag använder om och om igen. Temperatur - LM35 temperatursensorn producerar en spänning som kan gå direkt in i en picaxe och kan läsas med ett readadc eller readadc10 kommando. Ljus - ett ljusberoende motstånd har ett motstånd som varierar från några hundra ohm i starkt solljus till över 5 megohms i kolsvart. Mät motståndet på den ljusnivå du vill slå på och sätt LDR i serie med ett motstånd av ungefär samma värde. Jag ville t.ex. upptäcka lamporna på en bil som drog in i carporten för att tända några lampor. Motståndet var ca 1M från indirekt ljus så jag satte en 1M i serie med LDR. Brytare - vissa omkopplare växlar mellan 5V och 0V (en enpolig dubbelkastarknapp) men vissa slås bara på och av. Om en omkopplare slås på kan den skicka 5V till ett picaxe -chip, men om den är avstängd skulle picaxe -stiftet vara "flytande" och kan vara valfritt. Denna krets visar hur man drar ingången ner till marken när strömbrytaren är avstängd. Detta är kretsen som ska användas för de flesta tryckknappsbrytare. Potentiomter - en gammaldags vred. Vrid ratten och läs in spänningen i chipet. Det finns alla möjliga andra elektroniska enheter som skapar en spänning från 0-5V eller enkelt kan konfigureras för att göra det. Exempel är magnetiska sensorer, fuktighet, hastighet, beröring, infrarött ljus, tryck, färg och ljud. Sensorer i allmänhet kostar bara några dollar vardera.

Steg 15: Kontrollera enheter

Kontrollera enheter
Kontrollera enheter

Picaxe -hjälpfilen innehåller en bra förklaring till hur man styr motorer och lampor. Dessutom tycker jag att det finns några kretsar jag använder om och om igen. Den första är en enkel transistorkrets. Ett picaxe -chip kan slå på högst 20mA per stift vilket är bra för att slå på en LED men inte mycket annat. En 547 transistor ökar strömmen till 100mA vilket är bra för små glödlampor. Den andra kretsen visar en mosfet. Mosfets behöver nästan ingen ström för att driva dem - bara volt så att de kan styras direkt av en picaxe. Det finns alla möjliga mosfets men min preferens är en som heter BUK555 60B https://www.ortodoxism.ro/datasheets/philips/BUK555-60A.pdf Den kan drivas direkt från 5V (till skillnad från vissa som behöver 10V) men den största fördelen är att den har ett extremt lågt motstånd när den slås på - 0,045 ohm vilket inte är mycket mer än motståndet hos trådarna man skulle ansluta till den. Det betyder att det inte blir varmt när du kör ganska höga laster vilket sparar ström och sparar även kylflänskostnader. Som ett exempel som kör en 5amp -last som en bilstrålkastare; watt = strömkvadrat x motstånd, så W = 5*5*0,045 = 1,12 watt som bara skulle behöva en kylfläns som en 1 tum fyrkantig bit tunn aluminium. Den tredje kretsen visar ett relä. Det finns flera parametrar för alla reläer - spolspänning, spolmotstånd och lastspänning och ström. Till exempel kan ett relä ha en 12V spole med en spolström på 30mA, spolmotstånd på 400 ohm och kanske kunna driva upp till 240V vid 1 ampere. Spolströmmen är mer volt och ampere än vad en picax kan leverera, så vi använder transistorkretsen för att växla spolen. Det finns också en diod - detta undertrycker den bakre EMF när reläet stängs av. Tillbaka EMF är det som skapar gnistan för en tändstift så att du inte vill ha dessa höga spänningar någonstans i en krets. Kontakterna kommer att ha en maximal ström och volt - strömmen kan vara några ampere och volt är ofta 240V så att växling 12V eller 24V kommer att ligga långt inom räckvidd. Om du är oerfaren med elektronik ska du inte spela med nätspänningar. Det finns också små reläer som har spolspänningar på 5V eller 6V. För dessa reläer kanske du inte behöver en separat 12V -strömförsörjning utan bara titta på spolmotståndet eftersom många av dessa har strömdragningar på över 100mA. Om så är fallet och du använder en 78L05 100mA 5V regulator kanske du vill ändra detta till en 7805 regulator som kan leverera upp till 1 ampere. Reläer är särskilt användbara för växling av AC - t.ex. 24VAC trädgårdssprinklersolenoider, 12VAC trädgårdsbelysning och i elektriskt bullriga miljöer som en bil. De är också användbara för att styra stora laster, t.ex. en picaxe som levererar 20mA vid 5V = 0.1W som styr en transistor 12V vid 100mA = 1.2W till ett relä 24V 100mA = 2.4W till en kontaktor som driver en 3600W pump. Om du vill styra ström så får du en elektriker att koppla upp en kontrollbox och ge dig två ledningar som kommer ut (spoltrådar för ett 12V relä) som du kan styra. På detta sätt kan elektrikerna logga ut på strömboxen och du kan göra all elektronik utan att behöva oroa dig för att bli elektrokut. En annan användning för reläer är en backkontroll för en motor. Med hjälp av pulsbreddsmodulering i en mosfet kan du styra hastigheten på en likströmsmotor, och med ett DPDT -effektrelä kan du ändra riktning. Detta är ett enkelt sätt att styra stora motorer som de som används i "robotkrig". Skriv en kommentar om du behöver hjälp med att bygga något.

Rekommenderad: