Kijk in je keuken. Een magnetron met een oplichtend LED-display en een rubberen toetsenbord? Het verbergt je hersenen. Het is meer dan alleen een printplaat. Het is een microcontroller. Deze kleine siliciumchips zijn overal. Ze zitten diep verborgen in moderne producten. Je gebruikt het waarschijnlijk tientallen keren per dag.
Denk aan uw auto. Iedereen heeft er minstens één. Het duurdere model biedt plaats aan 6 tot 7 auto’s. Er werkt maar één motor. Gebruik verschillende antiblokkeerremmen. Cruisecontrol? Dit is de derde. Je begint een patroon te zien. Het apparaat waarmee u praat, heeft er waarschijnlijk een.
Ze worden op televisie vertoond. Ze staan op de videorecorder. Zelfs oudere high-end stereosystemen vertrouwen hierop. Wil je een foto maken? In een hoogwaardige DSLR of digitale camera is dat wel het geval. mobiele telefoon? Echt. camera. Antwoordapparaat. laserprinter. Is het een moderne telefoon met nummerherkenning en een geheugenslot voor 20 nummers? Ja. pieper. Ja. Ze worden ook gebruikt in huishoudelijke apparaten met veel functies, zoals koelkasten en vaatwassers met digitale interfaces.
Kortom, wanneer een product met een gebruiker communiceert, zit er een microcontroller in.
Maar wat is het precies? Waarom zouden we ons zorgen maken?
Als u dit onderdeel begrijpt, verandert de manier waarop u naar technologie kijkt. Dit is geen magie. Dit is gewoon techniek. Als u begrijpt hoe het werkt, opent u de zwarte doos. Je kunt zelf iets gaan bouwen.
Laten we dit mysterie oplossen. Ontdek wat een microcontroller is. Begrijp hoe uw gegevens worden verwerkt. Dan moet je het doen. Maak een digitale klok. Dat is het. Gebruik een microcontroller.
Vervolgens gaan we een digitale thermometer maken.
Deze items zijn meer dan alleen speelgoed. Zij zullen u vertellen over in de handel verkrijgbare producten. Bekijk hoe ingenieurs de apparatuur ontwerpen die ze gebruiken. Dit is praktische informatie.
“In principe zijn microcontrollers ingebed in producten en apparaten waarmee gebruikers communiceren.”
Dit is de eerste stap. Het enige wat nog rest is de implementatie.
Een microcontroller is een computer. Het heeft dezelfde basisstructuur als de desktopcomputer waarop u dit waarschijnlijk leest. Er is een processor die de code uitvoert. Het haalt die code uit de opslag. Het gebruikt RAM voor tijdelijke variabelen. Het heeft inputs en outputs die interageren met de wereld.
Het verschil is het doel. Een desktopmachine is een machine voor algemeen gebruik. Voer een browser, game of tekstverwerker uit. Microcontrollers zijn speciale machines. Het doet één ding. En het is heel goed gedaan.
Een apparaat gebruikt een ingebouwde driver als het aan bepaalde normen voldoet.
Het ingebedde doel
Deze chips zijn verborgen in andere apparaten. Ze controleren de functionaliteit of het gedrag van consumentenproducten. Je ziet ze niet. U heeft alleen interactie met de inhoud die ze mogelijk maken.
Ze zijn toegewijd. Ze voeren één specifiek programma uit. Programma’s worden meestal opgeslagen in ROM (alleen-lezen geheugen) en veranderen zelden. Het is ingebakken.
Macht is hier belangrijk. Een desktopcomputer die op de muur is aangesloten, kan 50 watt aan stroom verbruiken. Een microcontroller op batterijen kan 50 milliwatt aan stroom verbruiken. Dit maakt een groot verschil in efficiëntie.
Ingangen, uitgangen en omgeving
Microcontrollers hebben hun eigen invoerapparaten. Ze hebben vaak een kleine LED of LCD voor uitvoer. Maar meestal communiceren ze met de hardware die ze beheren.
Denk eens aan een televisie. De microcontroller ontvangt input van de afstandsbediening. Het geeft de uitvoer op het scherm weer. Bedient de kanaalkiezer. Pas de luidsprekers aan. Past de toon en helderheid van de elektronica van de kathodestraalbuis aan.
Of kijk naar uw auto. De motorcontroller ontvangt input van de zuurstofsensor en de pingelsensor. Controleer het brandstofmengsel. Het vertraagt de bougies.
Ook de magnetron is een klassiek voorbeeld. Er is invoer nodig van een toetsenbord. Toont de tijd op het LCD-scherm. Het activeert een relais om de magnetron aan of uit te zetten.
Deze chips worden ook geconfronteerd met zware omstandigheden. Ze zijn meestal duurzaam, hoewel niet noodzakelijkerwijs sterk en duurzaam. Motorcontrollers voor auto’s uit Alaska moeten bestand zijn tegen temperaturen tot -30°F. In Nevada kan het 120°F worden. Gecombineerd met de eigen warmte van de motor kan de binnentemperatuur van de auto stijgen tussen 150°F en 180°F.
Een microcontroller in een videorecorder? Het maakt waarschijnlijk niet uit. Het is helemaal niet stevig.
Interne hardware
De processor zelf is anders. Het kan oud zijn. Het kan verrassend krachtig zijn.
Z-80-processors kunnen in digitale telefoons worden gebruikt. Het was een 8-bits chip uit de jaren zeventig. Het was oorspronkelijk de voeding voor homecomputers.
Garmin GPS maakt gebruik van een energiezuinige versie van de Intel 80386. De 80386 is een desktopstandaard. Nu zit het in een draagbare navigator.
Voor eenvoudige taken geven fabrikanten de voorkeur aan speciale microcontrollerchips. Prijs en maat zijn de doorslaggevende factoren. Motorola 6811 en Intel 8051 zijn historische voorbeelden. Ze zijn ontworpen om goedkoop, compact en energiezuinig te zijn.
Dan zijn er de PIC-microcontrollers. Er is een reden waarom deze door Microchip ontwikkelde producten zo populair zijn. Naar huidige maatstaven zijn ze minimalistisch. Maar koop ze in volume, en ze zijn ongelooflijk goedkoop. Voldoe aan de behoeften van de ontwerper met één chip.
Waarom eenvoud wint
Overweeg een typische low-end microcontrollerchip. Het kan 1000 bytes ROM bevatten. 20 bytes RAM. 8 I/O-pinnen.
Bij productie in grote hoeveelheden bedraagt de prijs slechts enkele centen.
U zult hierop nooit Microsoft Word gebruiken. Word vereist 30 MB RAM en een processor die miljoenen opdrachten per seconde kan verwerken.
U hebt echter geen Word nodig om uw magnetron te bedienen. Er moet een specifieke taak worden uitgevoerd. Lage kosten. Laag vermogen. Dit is de waardepropositie van microcontrollers.
Met behulp van de microcontroller
De trend verschuift. Naarmate apparaten slimmer worden, vervaagt de grens tussen ‘microcontroller’ en ‘processor’. Maar de kernfilosofie blijft. Als u alleen maar relais wilt aansturen, sensoren wilt monitoren en LED’s wilt laten knipperen, heeft u geen supercomputer nodig. Je hebt een gefocust en efficiënt brein nodig.
De volgende keer dat u de klok controleert, de thermostaat aanpast of de auto start, onthoud dan deze kleine, duurzame en goedkope chip die stil op de achtergrond werkt. Het is niet alleen hardware. Het is een gespecialiseerde computer die zijn werk doet.
De beste manier is om TTL-poorten uit de 7400-serie te gebruiken om een digitale klok te bouwen. Leer hoe de spanning over een transistor stijgt. Je kunt zien waarom een enkele NOT-poort een fysieke chip is. Je ziet ook dat het implementeren van iets complexs complexe bedrading en meerdere chips vereist. Een eenvoudige klok kan 15 of 20 afzonderlijke componenten nodig hebben. het werkt. Het is wel omvangrijk. En het is moeilijk.
De software verandert de vergelijking volledig.
Microcontrollers bundelen de logica van tientallen poorten op één enkele siliciumchip. jij schrijft het programma. De chip voert het uit. De hardware doet de rest. In dit artikel slaan we het doolhof van het breadboard over en gaan we direct naar de code. We bouwen een digitale klok. Het kost bijna tweehonderd dollar. Dit lijkt gek voor een horloge dat alleen de tijd aangeeft. Het doel is echter niet om geld te besparen. Het doel is om te leren communiceren met de microcontroller. Als je dit begrijpt, kun je alles doen.
BASIC-stempel: hardwarevereenvoudiging
De meeste microcontrollers vereisen assembleertaal of complexe stuurprogramma’s. Vereist een programmeur. U moet klokcycli en geheugentoewijzing begrijpen. De BASIC Stamp van Parallax neemt deze wrijving weg. Dit is een PIC-microcontroller verpakt in de BASIC-taal die de meeste hobbyisten kennen.
De naam is letterlijk. Het bord is ongeveer zo groot als een postzegel.
We werken aan BASIC Stamp Revision D. Het zijn niet alleen chips. Het is een volledig gemonteerd draagbord. Inclusief 9 volt batterijhouder. Uitgerust met een vermogensregelaar die de spanning stabiel houdt. Inclusief header-pinnen voor invoer-/uitvoerlijnen. Er is ook een klein gebied voor prototypen als u een of twee weerstanden rechtstreeks op het bord wilt solderen. Je kunt ook de originele BS-1-chip kopen en deze zelf aansluiten. De Revisie D bespaart u gewoon de hoofdpijn.
Waarom “dure” postzegels gebruiken?
BASIC-zegels zijn niet beschikbaar voor consumentenproducten. Fabrikanten haten ze. ze zijn erg traag. Het is duur. Als u 10.000 stuks zou produceren, zou u waarschijnlijk een standaard PIC of AVR gebruiken. Maar voor prototypen? Ze zijn onverslaanbaar.
Het installeren van een normale microcontroller kan enkele uren duren. U moet zekeringen configureren. Je moet een bootloader branden. U moet seriële uitvoer debuggen. Voor de stempel zijn slechts twee dingen nodig. Sluit deze aan op een poort op uw desktopcomputer. jij schrijft het programma. Druk op verzenden. De chip werkt.
Met deze eenvoud komt een afweging. Het BS-1-geheugen in de postzegel is beperkt. Het EEPROM-geheugen bevat slechts ongeveer 256 bytes. Dit komt neer op ongeveer 75 regels BASIC-code. Er zijn beperkingen. U kunt geen webserver maken. Afbeeldingen met een hoge resolutie kunnen niet worden opgeslagen. U kunt het LED-lampje echter wel laten knipperen. de sensor kan worden uitgelezen. Je kunt een klok laten lopen.
Bouw een klok
Ik gebruik deze hardware om een digitale klok te bouwen. Het zal duur zijn. Het bord zelf kost een fractie daarvan, maar om het te programmeren heb je een computer nodig. Je moet je grenzen kennen.
De limiet van 75 regels dwingt je om efficiënt te zijn. Je kunt je code niet opblazen. Je moet bedenken wat de chip eigenlijk moet doen. Moet het seconden weergeven? Ja. Moet het display elke milliseconde ververst worden? Waarschijnlijk niet. Elke lijn is belangrijk.
Met deze aanpak leer je de kern van embedded systemen. Het gaat niet alleen om het schrijven van code. U beheert uw middelen. Je werkt binnen de hardwarelimieten. Als je een klok op een Stamp kunt laten werken, kun je vrijwel alles aansturen met een microcontroller. De logica blijft hetzelfde. De schaal verandert.
De klok zelf is eenvoudig. Maar daar komen is de echte waarde. Leer verbinding maken met behulp van pinnen. Leer tijd te beheren. Leer hoe u code op een chip met weinig of geen geheugen kunt plaatsen.
“De postzegels zijn zo klein en werken op batterijen dat je ze bijna overal mee naartoe kunt nemen.”
Deze draagbaarheid is een echt verkoopargument. Je kunt de klok overal mee naartoe nemen. Je kunt sensoren aansluiten. Je kunt er een weerstation van maken. De basis is solide. De code is strak. De uitrusting is minimaal.
Je bouwt niet zomaar een klok. Je bouwt vaardigheden op.
Een vereenvoudigde taal voor ingebedde logica
Het schrijven van een BASIC-stempel is niet het wiel opnieuw uitvinden. Gebruikt een verfijnde versie van de BASIC-programmeertaal. Als je BASIC al kent, zal het vertrouwd aanvoelen, alleen is de syntaxis preciezer. Als je een C-, Pascal- of Java-achtergrond hebt, zijn de functies van Stamp BASIC gemakkelijk te beheersen. Als je nog nooit code hebt geschreven, begin dan niet hier. Studeer eerst op uw bureaublad.
Parallax beschrijft deze omgeving in detail, maar laten we voor een snel overzicht eens kijken naar een specifieke reeks instructies die zijn ontworpen voor beperkte hardware.
Standaard besturingsstroom en subroutines
De kernlogica blijft constant. Hier zijn enkele gebruikelijke verdachten voor het beheren van de programmastroom.
voor...volgendevoor standaardcyclus.gosubspringt naar een subroutine.gotospringt naar de gemarkeerde regel in de code.als...danvoor voorwaardelijke beslissingen.letvoor de taak (hoewel meestal optioneel in Stamp BASIC).returnbeëindigt de subroutine.endstopt het programma en zet de chip in de slaapstand.
Directe I/O-pinbewerkingen
Dit is waar postzegels leven en sterven. Pinnen zijn interfaces met de fysieke wereld. BS-1 heeft 8 pinnen (0-7). BS-2 verdubbelt het naar 16 (0-15). Ze gaan beide kanten op. Je kunt ervan lezen en naar ze schrijven.
Je kunt ze besturen met behulp van bepaalde commando’s.
knopgebruikt ingebouwde debounce- en automatische herhalingslogica om invoer te lezen.- ‘high’ en ‘low’ zetten de pin op 1 (+5 V) of 0 (aarde).
inputenoutputdefiniëren de richting van de pin.- Sluit de potentiometer aan op de condensator volgens de instructies, en de ‘pot’ leest de potentiometer.
pulsinenpulsoutbehandelen de invoer en uitvoer van de pulsduur.pwmproduceert pulsbreedtemodulatie voor motoren of dimmen.reversekeert de I/O-richting om.serinenseroutverzorgen seriële communicatie.geluidproduceert een specifieke frequentie.- Verander de bitstatus van de
toggle-uitvoerpin.
Stempelspecifieke functies en EEPROM
De hardware heeft enkele eigenaardigheden waar de taal direct op reageert:
branchLees de vertakkingstabel om het zoeken te versnellen.- Stuurt de string
debugnaar de desktopconsole. eepromverzorgt de programmaopslag.lookdownenlookupmaken tabelindexering mogelijk.- ‘dutje’ en ‘pauze’ zorgen voor vertragingen.
randomgenereert pseudo-willekeurige getallen.- ‘lezen’ en ‘schrijven’ gebruiken niet-vluchtig EEPROM-geheugen.
sleepschakelt de chip voor een bepaalde tijd uit.
Rekenkundige en logische operatoren
Wiskunde is fundamenteel. Het is heel eenvoudig.
+en-voor optellen en aftrekken.*voor lage woordvermenigvuldiging.**voor vermenigvuldiging van hoge woorden.
●/voor deling.- voor modulair.
maxenminworden gebruikt om extreme waarden te vinden.
Logische bewerkingen zijn b.v.
&(en)|(of)
–^(XNOR)
–&/(NEN)|/(NOR)
–^/(XNOR)
Vergelijkingsoperatoren voor de if -instructie zijn =, <>, <, <=, >, >=, AND, OR.
Geheugenlimiet: 14-byte realiteit
BS-1-variabelen zijn niet oneindig. Er zijn precies 14 bytes RAM. Je moet elke byte als goud behandelen.
De taal biedt vooraf gedefinieerde namen van variabelen, maar u kunt ook aliassen toevoegen aan namen van variabelen.
w0-w6: 16-bits woordvariabelen.b0-b13: 8-bit bytevariabelen.bit0-bit15: 1-bit Booleaanse variabelen.
Dit is het probleem. Vanwege de manier waarop het geheugen in kaart wordt gebracht, delen de w0 en b0 (en b1 ) dezelfde fysieke RAM-locatie. w1 wordt gedeeld met b2 en b3. bit0 –bit15 staan in w0. Dit betekent dat het veranderen van w0 ook b0 en b1 zal veranderen. Dit is geen fout. Dit is een beperking. U moet precies weten wat u overschrijft.
Praat met de wereld via pinnen
Waarom zijn er zoveel I/O-instructies? Omdat deze pinnen de enige manier zijn waarop de postzegel met de buitenwereld communiceert.
Het verzenden van waarden is eenvoudig. high 3 verzendt +5V op pin 3. low 3 verzendt aarde. U kunt elke pin van 0 tot 7 van BS-1 kiezen. De logica is vergelijkbaar met BS-2, maar er zijn meer pinnen om te besturen.
Geavanceerde instructies zoals 'pwm' voor motoren en 'pot' voor variabele weerstanden vereenvoudigen het hardwareontwerp. Voor elke analoge ingang zijn geen complexe externe circuits vereist. De stempel regelt de timing van de puls.
Als je vastzit, is "Programming and Customizing a BASIC Stamp Computer" van Scott Edward een betrouwbare hulpbron. Het bevat een voorbeeldproject dat laat zien hoe u deze dingen met elkaar kunt verbinden in plaats van alleen maar code te schrijven.
Je hebt geen PhD in embedded systemen nodig om BASIC Stamp te gaan gebruiken. Het enige wat u nodig heeft is een desktopcomputer en de BASIC Stamp Starter Kit. Deze kit bevat de benodigde hardware, verbindingskabels en een desktopapplicatie om de BASIC-code in het geheugen van de chip te duwen.
Dit pakket kun je aanschaffen bij Parallax of Jameco, leveranciers die je wellicht kent uit onze eerdere artikelen over elektronische poorten en digitale klokken. Parallax vermeldt de BASIC Stamp D Starter Kit als onderdeelnummer 27202. Jameco's onderdeelnummer is 140089. Beide kosten $79.
Parallax voert af en toe 'We've Bagged the Basics'-campagnes uit. Deze deal voegt Scott Edward's "Programming and Customizing the BASIC Stamp Computer" toe aan je doos. Dit is een handig naslagwerk als je dieper wilt graven dan de handleiding.
Bedrading en uitvoering van code
De fysieke installatie is eenvoudig. Sluit de stempel aan op de parallelle poort van uw computer. Voer vervolgens de DOS-toepassing uit, bewerk de code en stuur deze over de draad.
Druk op ALT-R om het programma in de editor uit te voeren. De software controleert eerst uw syntaxis. Duw vervolgens de code in het EEPROM-geheugen van de postzegel. De chip voert het onmiddellijk uit.
Het standaardvoorbeeld creëert een blokgolf op I/O-pin 3. Sluit een logische sonde of LED aan op deze pin. Je ziet het twee keer per seconde knipperen. Het commando PAUSE zorgt ervoor dat de status elke 250 milliseconden verandert.
Dit apparaat trekt voldoende stroom om enkele weken te werken op een 9 volt batterij. Je kunt meer leven eruit persen door de timing aan te passen. Schakel de LED slechts 50 ms in en vervolgens 450 ms uit. Het overschakelen van PAUZE -instructies naar NAP -instructies kan ook het energieverbruik aanzienlijk verminderen.
Een echt dure digitale klok maken
$ 79 uitgeven aan zwaailichten lijkt zonde. De meeste mensen willen iets nuttigs bouwen met BASIC Stamp. Nog eens $ 100 levert je een digitale klok op. De kosten lijken hoog totdat u zich realiseert dat de onderdelen niet wegwerpbaar zijn. Ze zijn herbruikbaar. Deze zullen wij gebruiken in toekomstige projecten.
Rijd meerdere nummers met een beperkt aantal pinnen
Stel dat u een nummer op een I/O-pin moet weergeven. In onze vorige gids voor digitale klokken hebben we laten zien hoe je een 7447-chip kunt gebruiken om verbinding te maken met een LED met 7 segmenten. Deze chips werken goed met de BASIC Stamp. Sluit 4 pinnen rechtstreeks aan op 7447. Op het display verschijnt een getal tussen 0 en 9. De BS-1-stempel heeft acht I/O-pinnen. Dit is genoeg om twee 7447's rechtstreeks van stroom te voorzien.
De klok heeft 4 cijfers nodig. Acht pinnen kunnen niet tegelijkertijd vier chips aansturen. je wordt creatief.

Hier is de opstelling. Acht regels komen uit de stempel. Vier lijnen zijn verbonden met alle vier de 7447's. Ze dragen gegevens bij zich. De andere vier lijnen activeren de chips één voor één. De "E"-pin van de 7447 is een inschakelingang. Het scherm wordt leeggemaakt. Het stempelprogramma voert het eerste cijfer uit. Verwissel de eerste controlelijn om de eerste chip in te schakelen. Stuur dan nog een waarde. Het maakt de tweede chip mogelijk. Herhaal ze alle vier keer op keer.
Je kunt op veel verschillende manieren verbinding maken. 7447 zou genoeg kunnen zijn. Gebruik een demultiplexer 74154. Meer chauffeurs. Zo kun je tot 16 cijfers rijden.
De realiteit van multiplexen
Zo bedient u uw LED-display. Open de oude LED-calculator. Schakel het in. Schud terwijl u naar het scherm kijkt. Let goed op. Er brandt slechts één cijfer tegelijk. Deze techniek wordt multiplexen van het display genoemd. Laat uw oog het volledige getal zien.
Multiplexing werkt met klokken. Werkt met een rekenmachine. Er zijn problemen.
LED's verbruiken stroom. Snel.
7-segment-LED geeft alleen cijfers weer.
De hoeveelheden zijn beperkt. Hoe zit het met brieven? Hoe zit het met de symbolen?
Schakel over naar LCD
Een LCD-scherm is het alternatief. Deze schermen zijn overal. Ze zijn eenvoudig aan te sluiten op een Stamp.
Overweeg een alfanumeriek display met twee regels en 16 tekens. Dit type is verkrijgbaar bij Jameco. Onderdeelnummer 150990. Ook verkrijgbaar bij Parallax. Onderdeelnummer 27910.

Deze afbeelding toont een typisch display. Het is bevestigd aan een breadboard. Dit maakt het communiceren eenvoudiger. Je soldeert geen draden aan blootliggende delen. Je sluit rijen aan.
Eénregelig LCD-scherm is duur, maar om een eenvoudige reden
Je krijgt waar je voor betaalt. Dit type LCD-module is duur. De prijs ligt rond de $ 59. Dat is niet bepaald zakgeld voor een hobbyist. Het kan zeker niet worden gebruikt in in massa geproduceerde ovens. De marge zou verdwijnen voordat u het eerste exemplaar had verkocht.
Maar ze bestaan om een reden. Het ontwerpproces is vereenvoudigd. U kunt het hele beeldscherm aansturen met slechts één I/O-pin.
Deze module bevat logica. Het verzorgt het zware werk van seriële communicatie. De Stamp-microcontroller hoeft alleen maar gegevens te verzenden. Het SEROUT -commando in Stamp BASIC maakt dit triviaal. Geen complexe getimede lussen vereist. U hoeft niet te worstelen met protocolspecificaties. De hardware doet het werk.
Voedings- en weergavefuncties
Het stroomverbruik is zeer laag. Dit apparaat verbruikt slechts 3 milliampère stroom. Dat is verwaarloosbaar voor een project op batterijen. Hij wordt gevoed door een standaard 9 volt batterij via een stempel die de nodige +5 volt en aarde levert.
Het scherm zelf is veelzijdig. Het toont alfanumerieke tekst. Brieven. Nummers. U kunt ook aangepaste tekens definiëren als u een specifiek pictogram wilt. Het is meer dan alleen een knipperend licht. Het is daadwerkelijke tekstuitvoer.
Prototype en productie
Dit is de realiteit van embedded design. U kunt prototypes maken met dure maar eenvoudig te gebruiken onderdelen. Vervolgens herontwerp je tegen de kosten.
Als u een commercieel product bouwt, gebruikt u dit display van $ 59 om uw logica te valideren. Test uw code. Je zorgt ervoor dat de interface werkt. Zodra dat is bevestigd, ga ik over op een goedkoper LCD-scherm voor algemeen gebruik. Je zou aangepaste driverchips schrijven. Optimaliseer uw software. Dure modules zijn ontwikkelingshulpmiddelen, geen definitieve leveringshulpmiddelen.
Maak een verbinding
Het aansluiten van de hardware is heel eenvoudig. Voeding +5V en aarde. Sluit een van de I/O-pinnen van het label aan op de ingangslijn van de monitor.
Ik geef hiervoor de voorkeur aan draadwikkeling. Het is schoon. Betrouwbaar. Er is geen solderen nodig. U hebt een draadwikkelgereedschap nodig (Jameco onderdeel 34577) en 30-gauge draadwikkeldraad (Jameco onderdeel 22541 is een gebruikelijke keuze). De verbindingsstructuur is compact. Je kunt alles in een klein doosje stoppen zonder tonnen soldeerbout.
Codestructuur en nauwkeurigheid
Het BASIC-programma hieronder verandert de Stamp in een klok. Er wordt van uitgegaan dat het LCD-scherm is aangesloten op I/O-pin 0.
""Basis
pauze 1000 ' Wacht tot het LCD-scherm is opgestart
serout 0, n2400, (254, 1) 'Maak het scherm leeg
serout 0, n2400, ("time:") 'Druk de titel "time:" af
' Stel variabelen in voordat u het programma laadt
b0 = 0 ' Seconden
b1 = 27 minuten
b2 = 6' Uur
nogmaals:
b0 = b0 + 1 ' Seconden verhogen
als b0 < 60 dan minuten
b0 = 0 'reset seconden
b1 = b1 + 1 'optelling
Minuten:
tijd als b1 < 60
b1 = 0 'Reset de minuten
b2 = b2 + 1 'Tijd toevoegen
Tijd:
Laat zien of b2 < 13
b2 = 1 'Resettijd (12-uursformaat)
Weergave:
serout 0, n2400, (254, 135) ' cursorpositie
serout 0, n2400, (#b2, jpg, #b1, static, #b0, " ") ' Weergavetijd
pauze 950 ' wacht 950 ms
Ga opnieuw naar "Afspelen".
""
De logica is eenvoudig. Het commando SEROUT handelt alle communicatie af. De reeks (254, 1) dient als ontsnappingscode. Vertelt de monitor dat het scherm moet worden gewist. De set (254, 135) positioneert de cursor. Het enige dat u hoeft te doen, is een tekstreeks verzenden.
Het horloge is behoorlijk nauwkeurig. U kunt de PAUSE -instructie wijzigen door deze aan te passen. Het kan elke dag binnen enkele seconden worden voltooid. Het is niet zo nauwkeurig als een atoomklok. Dit is echter voldoende voor zelfstandige apparaten.
Deze aanpak
Eenvoudige timinglussen kunnen afwijken. Als je precisie nodig hebt, heb je hardware nodig.
Real Time Clock (RTC)-chips lossen het driftprobleem op. Een kristal wordt gebruikt om de nauwkeurigheid van de tijd te behouden. Plak deze op de stempel. De stempel leest ongeveer één keer per seconde. Geef vervolgens de informatie weer.
Het is niet slechts een kwestie van seconden.
De meeste RTC-chips verwerken ook datuminformatie. Schrikkeljaarcorrecties worden automatisch beheerd. Uw code hoeft niet te berekenen of februari 28 of 29 dagen heeft. Dat is de rol van de chip.
Gebruik zakhorloge B
Het combineren van RTC en postzegels kan ingewikkeld zijn. Data- en kloklijnen vereisen meerdere pinnen. Er is een gemakkelijkere manier.
Gebruik zakhorloge B.
Deze module vereenvoudigt de connectiviteit. Gebruik een seriële verbinding. Er is slechts één I/O-pin vereist voor communicatie. Hierdoor komen er pinnen vrij voor andere sensoren en displays.
De uitrusting is compact. Het is ongeveer zo groot als een kwart. Intern zijn de klokchip, het kristal en de seriële logica geïntegreerd in één pakket.
Waar heb je het gekocht?
Twee grote leveranciers hebben dit onderdeel op voorraad. Het onderdeelnummer van Jameco is 145630. Parallax verkoopt het met onderdeelnummer 27962.
Prijs is ook een factor. Zakhorloge B wordt verkocht voor ongeveer $ 30. Dat is steil voor een hobbyistische broodroostercontroller. Dat zou je niet in een consumentenapparaat inbedden. Maar voor prototypen? Goedkoop genoeg om te proberen.
Elimineer het gedoe van het handmatig beheren van I2C- of SPI-protocollen. Schrijf minder code. U krijgt een preciezere tijd.
Maak een digitale thermometer
We weten al hoe de stempel communiceert met het LCD-scherm. Dus laten we het een manier geven om de wereld waar te nemen. Meer specifiek ben ik een digitale thermometer aan het bouwen. De kern van het project is een gespecialiseerde temperatuursensorchip, de DS1620.
Dit is niet zomaar een weerstand waarvan de weerstand verandert bij hitte. De DS1620 is een compleet systeem in één 8-pins behuizing. Het bevat een temperatuursensor, een analoog-naar-digitaal (A/D)-omzetter en een schuifregister om de gegevensuitvoer te verwerken. Het bevat ook een klein gedeelte van EEPROM voor het opslaan van instellingen zoals de thermostaatmodus.
Begrijp de bedrijfsmodi van de DS1620
Chips zijn flexibel. Het fungeert als een afzonderlijke thermostaat en activeert een relais wanneer de temperatuur de drempel overschrijdt. Als alternatief kan hij op een microcontroller worden aangesloten en puur als precisiethermometer worden gebruikt. De EEPROM onthoudt de geselecteerde modus en instellingen.
Ook het aansluiten op BASIC-zegels is eenvoudig. Geen complexe schakelingen vereist. Volg de stapelspecificaties.
- Pin 8: +5 volt voeding.
- Pin 4: Aarde.
- Pin 1 (data): Datalijn. Bits gaan hier in en uit.
- Pin 2 (klok): Kloklijn. Hierdoor wordt de gegevensoverdracht gesynchroniseerd.
- Pin 3 (Reset/Select): Controlelijn. Communiceer met de chip terwijl je een level omhoog gaat. Laag om te deselecteren.
In dit voorbeeld verbinden we ze met specifieke I/O-pinnen op de stempel.
- Gegevens (pin 1) zijn verbonden met Stempel Pin 2.
- Klok (pin 2) is aangesloten op stempel pin 1.
- Reset (pin 3) is verbonden met Stempel pin 0.
Het is de moeite waard om te betalen voor het Jameco- of Parallax-applicatiepakket. Dit document haalt het giswerk uit de configuratie.
Dit kan worden gebouwd op een Stamp Vector-prototyping-gebied of op een breadboard. Nadat u de DS1620 hebt aangesloten, sluit u het LCD-scherm aan op I/O pin 3. Download dan de volgende BASIC-code.
""Basis
Selecteer/reset rij met symbool RST = 0 ' 1620
Symbool CLK = 1 '1620 schuifregisterkloklijn
2' datalijn met symbool DQ = 1620
Symbool DQ_PIN = pin2 'Pinweergave van DQ
Symbool LCD = 3' LCD-datalijn
Aan de slag:
Lage RST "Verwijder 1620, tenzij tegen gesproken"
De klokpinnen van de CLK' 1620 zijn standaard ingesteld op HOOG.
pauzeer 1000 en wacht tot de thermometer en het LCD-scherm worden ingeschakeld
Instellingen:
HiRST'Select 1620
b0 = $0C '$0c is 1620 opdrachtbytes' betekent 'Schrijfconfiguratie'
Verzenden naar gosubshift_out '1620
b0 = %10 ' %10 is 1620 opdrachtbytes ' Thermometermodus instellen
Verzenden naar gosubshift_out '1620
Schakel 'Lage RST' 1620 uit
Pauze 50' is een EEPROM-vertraging van 50 ms
Start de conversie:
b0 = $EE ' $EE is 1620 opdrachtbytes ' Start de conversie
HiRST'Select 1620
Verzenden naar gosubshift_out '1620
Schakel 'Lage RST' 1620 uit
"Dit is de hoofdlus" - leest en geeft de temperatuur elke seconde weer
Hoofdlus:
HiRST'Select 1620
b0 = $AA ' $AA is 1620 opdrachtbytes die worden gebruikt om de temperatuur te lezen
Verzenden naar gosubshift_out '1620
gosub SHIFT_IN 'Temperatuur aflezen vanaf 1620'
"Lage RST" deselecteert de DS1620.
gosub display 'Toon de temperatuur in graden Celsius
Pauze 1000 'Wacht even
ga naar main_loop
'shift_out subroutine' stuurt de inhoud van de b0 byte naar 1620
Ga naar buiten:
Output DQ ' Stel de DQ-pin in op output
voor b2 = 1 tot 8
lage CLK
DQ_PIN = bit0 'Databit verzenden
hoge CLK
b0 = b0/2
Volgende
Terug
'shift_in subroutine krijgt 9 bits 1620' van temp
Intrekken:
input DQ 'Stel DQ-pin in op invoermodus'
w0 = 0 ' Wis w0
voor b5 = 1 tot 9
w0 = w0/2 ' Verschuif de invoer naar rechts.
lage CLK
bit8 = DQ_PIN 'Lees dit bit
hoge CLK
Volgende
Terug
'Geef de temperatuur weer in graden Celsius
Weergave:
als bit8 = 0 dan pos 'if bit8=1' dan is de temperatuur negatief
b0 = b0 &/ b0 ' NAND b0 met zichzelf en draai het om '
b0 = b0 + 1
Positie:
Serieel LCD-scherm, n2400, (254, 1) 'Leeg LCD-scherm
serout LCD, n2400, ("Temp = ") ' Geef 'Temp="' weer op het scherm
bit9 = bit0 'Bespaar een halve graad
b0 = b0 / 2 ' wordt omgezet in graden
if bit8 = 1 then neg ' Controleer of temp een negatief getal is
serout LCD, n2400, (#b0) 'Positieve temperatuur weergeven
ga naar de helft
Negativiteit:
serout LCD, n2400, ("-", #b0) 'Negatieve temperatuur weergeven
helft:
Als bit 9 = 0, even getal
serout LCD, n2400, (.5 C") 'weergave halve graad
ga klaar
Even getal:
serout LCD, n2400, (.0 C") 'Geef halve graad weer
gedaan:
Terug
""
Voer dit programma uit. Het LCD-display geeft de temperatuur weer in graden Celsius met een nauwkeurigheid van 0,5 graden.
Hoe het complement van 2 werkt in DS1620
De DS1620 verzendt geen eenvoudige nummers. Gemeten 0,5 graden Celsius. Drukt een 9-bits twee-complement binair getal af.
Waarom is dit belangrijk? Correct omgaan met negatieve temperaturen. Het bereik is -55°C tot +125°C (-110°F tot +250°F). Deel deze waarde door twee om de meting in graden Celsius te krijgen.
Het twee-complement is de standaardmanier waarop computers gehele getallen met teken weergeven. Het meest linkse bit is het tekenbit. Indien 0, is het getal positief. Indien 1, is het getal negatief.
Laten we eens kijken naar een 4-bits voorbeeld. Deze waarden zijn -8 tot +7 in plaats van 0 tot 15.
0111is 70000is 01000is -81111is -1
Om een negatief getal naar een positief getal te converteren en weer te geven, draai je alle bits om en tel je er 1 bij op. Deze code doet precies dat in de display -subroutine. Controleer bit8 (tekenbit van 9-bit resultaat). Indien negatief, keer dan b0 om en tel er 1 bij op. Verschuif het vervolgens naar rechts om gehele machten te krijgen.
Extraheer de codelogica
Dit programma gebruikt drie subroutines om het communicatieprotocol te beheren.
Symbooldefinitie
Deze code gebruikt een 'symbool' om fysieke pincodes toe te wijzen aan voor mensen leesbare namen. RST, CLK, DQ komen overeen met stempelpinnen 0, 1, 2. Dit maakt uw code draagbaar. Zelfs als u de symbool -definitie verandert, blijft de rest van de logica hetzelfde.
Verwijder het programma
shift_out neemt de bytes van b0 en verzendt ze bit voor bit.
1. Wijs datapin (DQ ) toe als uitvoer.
2. Draai 8 keer.
3. Controleer het minst significante bit van b0.
4. Trek de klokpin naar beneden, plaats de datapin op dat bit en trek de klokpin omhoog.
5. Verschuif b0 naar rechts zodat het volgende bit naar de minst significante positie gaat.
Ploegenwisselprocedure
shift_in leest een 9-bits temperatuurwaarde in w0.
1. Configureer de datapinnen als ingangen.
2. Draai 9 keer.
3. Trek de klokpin naar beneden.
4. Lees de datapinstatus naar `.
De code leest niet alleen gegevens. Het legt de basis. Forceert de CLK- en RST-pinnen van de DS1620 naar de verwachte status. Dit is de eerste stap.
Vervolgens volgt de configuratie. De microcontroller schrijft de opdrachtbyte naar het EEPROM-geheugen van de DS1620. Laat de chip in "thermometermodus" gaan. Hier is de vangst. Patronen worden opgeslagen in een niet-vluchtig geheugen. Je hoeft het maar één keer te doen. Technisch gezien kunt u dit deel van uw code na de eerste keer uitvoeren verwijderen, waardoor waardevolle programmaruimte wordt bespaard. Maar zullen we het daarbij laten? Het is veiliger.
Het programma verzendt vervolgens het commando $EE. Houd er rekening mee dat het voorvoegsel "$" een hexadecimaal getal betekent. De decimale waarde van $EE is 238. Hiermee wordt het conversieproces gestart. De thermometer begint te werken.
Dan begint de cyclus.
De stempel vraagt de DS1620 elke seconde om de huidige temperatuur. De chip reageert met een 9-bits waarde. Deze waarde bevindt zich in de variabele w0. Gegevensoverdracht gebeurt beetje bij beetje. De Stamp schakelt de CLK-lijn op de DS1620 om om bits in te schuiven.
De structuur van de variabele is hiërarchisch. w0 (16 bits) omvat b0/b1 (8 bits) en omvat bit0 tot bit15 (1 bit). Deze code deelt w0 door twee wanneer de bit in bit 8 verschijnt. Hierdoor wordt elke bit naar rechts verschoven. Dit is een geweldige manier om 9-bits temperaturen in een variabele te verpakken.
Wanneer w0 de gegevens opslaat, worden deze toegepast door de schermsubroutine. Controleer of het getal positief of negatief is. Het formatteert de uitvoer voor het LCD-scherm. Resultaten worden weergegeven in graden Celsius. Als je Fahrenheit nodig hebt, is de conversie eenvoudig.
dF = dC * 9/5 + 32
Het is heel eenvoudig. het werkt. Je hebt nu een hele dure thermometer.
Waarom zoveel betalen?
Stel je voor dat je voor een farmaceutisch bedrijf werkt. Je bezorgt dure medicijnen door het hele land. Deze medicijnen moeten bij bepaalde temperaturen worden bewaard. Door ontdooien of invriezen wordt het beschadigd. Totaal verlies.
U kunt Stamp gebruiken om een Datalogthermometer te bouwen.
Jameco verkoopt de RAM Pack Module (onderdeelnummer 143811). Parallax verkoopt hetzelfde product ook (productnummer 27960). Dit is een 8 KB RAM-chip met laag vermogen en een seriële interface. Als je meer ruimte nodig hebt, kun je ook kiezen voor de 32 KB-versie.
Voeg dit onderdeel toe aan uw stempel. Schrijf code die elke minuut temperatuurmetingen in het RAM opslaat. Steek de stempel in de medicijnzending. U ontvangt een stempel wanneer u op uw bestemming aankomt. De RAM-module registreert nu de temperatuurgeschiedenis van de hele rit. U weet precies of de medicijnen ooit buiten de specificaties zijn geraakt.
Dit is slechts één toepassing. Als je eenmaal begrijpt hoe microcontrollers werken, kun je Stamp gebruiken om talloze nuttige apparaten te bouwen.
Meer informatie over microcontrollers en aanverwante onderwerpen vindt u via de links op de volgende pagina's:
De specificaties werden dikker. Dit is geen handleiding die u één keer leest en vervolgens vergeet. Dikker in de zin dat er daadwerkelijke cijfers waren. Deze cijfers vertellen u precies wat de machine kan doen voordat u hem koopt. En er zijn nog meer cijfers. Vervolgens volgt de disclaimer over de levensduur van de batterij. dat was technisch waar, maar praktisch nutteloos.
Hardwarerealiteitscontrole
Je krijgt de processor. Het is snel. Het is sneller dan de vorige. Het is sneller dan de oude laptops die klonken als een straalmotor die elke keer dat je een spreadsheet opent, opstijgt. Maar het is geen magie. Deze chip maakt de kamer niet schoon. Het verwerkt alleen gegevens. Snel. Het is erg snel. Als je een video aan het bewerken bent. Of coderen. Of open 50 tabbladen en vraag je af waarom je A-computer zo heet wordt?
Het scherm is helderder. Dit is het belangrijkste verkoopargument. Je kunt er buiten naar kijken. Zonder te loensen. Zonder te wensen dat je ogen ingebouwde HDR hadden. Kleuren zijn nauwkeurig. Als je om dat soort dingen geeft. Als je een ontwerper bent. Of ben je gewoon moe van foto's die eruit zien alsof ze in een grot zijn gemaakt.
Vervolgens het gewicht. Het is lichter. Maar het is niet vederlicht. Je voelt het nog steeds in je tas. Het heeft een sterke aanwezigheid. Een herinnering dat u een A-computer bij u heeft. Het is geen tablet. Het is geen notitieboekje in de papieren zin. Een computer. Met poorten. Echte havens. Het is geen dongel. Geen adapters die meer kosten dan het apparaat. Dit is belangrijk. Veel. Omdat dongels kapot gaan. Adapters raken zoek. Havens blijven.
Software-eigenaardigheden en updates
Het besturingssysteem is hetzelfde. Grotendeels. Maar er zijn ook veranderingen. Kleine. Dingen die je opvalt na een week? Niet onmiddellijk. Er verschijnt onmiddellijk een nieuw pictogram. Nieuw kleurenschema. Wanneer u de app opent die u 10 minuten geleden gebruikte, is er een kleine vertraging.
Updates gebeuren automatisch. Dit is goed. En slecht. Fijn, want je hoeft niet na te denken over beveiligingspatches. Slecht omdat uw machine mogelijk opnieuw opstart net als u denkt dat u klaar bent voor vandaag. Het gebeurt op ongelegen momenten. Bijvoorbeeld wanneer u op het punt staat een document op te slaan. Of vlak voor een vergadering.
Dit softwarepakket wordt meegeleverd. Het is altijd met elkaar verbonden. Je beschikt over een tekstverwerker. Spreadsheet. presentatie hulpmiddelen. ze werken samen. Ze werken niet altijd goed samen. Maar ze probeerden het. Er is cloudsynchronisatie. Het is snel. Gebruikelijk. Soms stopt het. Daarna moet u de applicatie opnieuw opstarten. Dan moet je bidden.
Ecosysteemval
Dit is het deel dat mensen negeren totdat het te laat is. Het apparaat bevindt zich niet in een vacuüm. Woont in de tuin. Omheinde tuin. Je kunt naar buiten lopen. Maar waarom doen we dit? Deze apps zijn zorgvuldig geselecteerd. De mix is diepgaand. De telefoon communiceert met de laptop. Het horloge vertelt je telefoon wat hij moet doen. Het is erg handig.
Maar het is ook beperkend. Wanneer u van merk verandert. Dit gemak is verloren gegaan. Elimineer het schakelen tussen kanalen. Ik ben mijn gedeelde klembord kwijt. Ik kan geen oproepen beantwoorden op mijn A-computer. Dit lijkt een klein dingetje. dat is het niet. Het is dagelijkse wrijving. Voeg een beetje opwinding toe.
De rest is de prijs van accessoires. Het is niet de prijs. Betaling. Eigen kabel. speciale oplader. Dit is een perfect geval. Het is duur. En ze zijn prachtig. En


















