archive-nl.com » NL » P » PICBASIC.NL

Total: 182

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • Contact pagina NL
    van deze site hebt zoals de PIC Basic cursus kun je die beter stellen op het elektronicaforum Je krijgt eerder antwoord en anderen kunnen meekijken en ook van jouw vraag leren 141101 ombouwset voor oude kiesschijf telefoon name onderwerp Naam

    Original URL path: http://www.picbasic.nl/contact.htm (2016-02-17)
    Open archived version from archive


  • Wat is een Basic Stamp?
    een losse PIC met dezelfde of meer capaciteiten Aan het printplaatje zitten afhankelijk van het type minimaal 24 pinnen in DIL formaat zie foto zodat de Basic Stamp in een normaal IC voetje te plaatsen is Als je de Basic Stamp programmeert komt het Basic programma niet in de PIC daar zit de Basic interpreter dus in maar in de EEPROM De editor met kleuren syntax waarin je je Basic programma s op de PC schrijft is gratis te downloaden van de site van Parallax Voor een Basic Stamp is geen programmer nodig je sluit het rechtstreeks aan op de serieële COM poort van je PC of laptop zodra je Basic programma in de EEPROM opgeslagen is kan de verbinding tussen de PC en de Basic Stamp verbroken worden Een Basic Stamp is duur in aanschaf als er dus veel projecten met een C zullen worden gemaakt loont het om de Basic compiler van Crownhill aan te schaffen en direct met PIC s te gaan werken maar voor beginners is een Basic Stamp ideaal al binnen enkele minuten is er een werkend programma te schrijven Basic Stamp Makkelijke taal snel te leren Ideaal voor beginners met micro controllers Rechtstreeks aan

    Original URL path: http://www.picbasic.nl/basicstamp.htm (2016-02-17)
    Open archived version from archive

  • Galva-Wisp low cost PIC programmer
    PIC heeft alle signalen en voeding in één keer te pakken Zelfs een programmeerconnector op de print is dan niet nodig De 13V programmeerspanning Vpp die voor de flash PIC s nodig is tijdens programmeren wordt door de Galva Wisp zelf gegenereerd uit de 5V voedingsspanning dus ook daar heb je geen omkijken naar Overzicht alle door Galva Wisp Wisp648 ondersteunde PIC types op numerieke volgorde Een selectie PIC s die programmeerbaar zijn door de Galva Wisp Wisp648 met specificaties Overzicht aansluitingen met diverse PIC types Meer info over In Circuit Serieel Programmeren ICSP Conrad heeft een DIL clip in zijn assortiment Onderdelenlijst print 130101 De componenten de reset toets is niet per se nodig Print 130101 Zelf etsen of door iemand laten maken 31mm x 54mm IC1 PIC16F648A Download het HEX bestand onderaan deze pagina IC2 IC3 PC827 of LTV827 dual optocoupler LED1 LED2 Groene en rode LED Ø3mm low current type T1 BC547 NPN transistor T2 TIP120 NPN darlington transistor zie hier D1 D2 D3 D4 BAT85 Schottky diode 1N4148 kan ook maar BAT85 verdient voorkeur D5 SB140 Schottky diode of SB130 of 1N5819 X1 Kristal 20MHz R1 R2 R9 R12 1k R3 R8 47Ω R13 2k2 C1 1000 F 6 3V of 10V radiaal zie hier C2 100n axiaal komt onder IC1 in het IC voetje te liggen C3 C4 1 F tantaal C5 22 F C6 C7 22pF S1 Reset toets mag weggelaten worden Conn1 15 polig sub D connector male Conn2 9 polig sub D connector female IC voet 18 pins aangeraden is een voet met gedraaide buscontacten zie foto De meeste onderdelen zijn verkrijgbaar bij webshop Voti Bestel daar dan meteen een stuk of wat PIC s die zijn daar goedkoop C2 wordt binnenin het IC voetje onder de PIC gemonteerd Let ook op het draadje aan pin 7 van de 9 polige sub D connector Let er op dat de 2 optocouplers met de nokjes naar elkaar toe worden gemonteerd Diode D5 moet een Schottky diode zijn bijvoorbeeld type SB130 SB140 of 1N5819 Een kleiner type Schottky diode zoals BAT85 wordt echter afgeraden omdat deze mogelijk de piekstroom bij inschakelen niet overleeft C2 wordt in het IC voetje onder de PIC gemonteerd zie foto De PIC moet sowieso in een voetje zodat deze van tijd tot tijd van nieuwe software kan worden voorzien zodat ook de nieuwste PIC types geprogrammeerd kunnen worden Updaten kan door eerst de update in een andere 16F648 te programmeren en dan de PIC IC1 te vervangen De oude PIC is dan weer voor een ander project te herprogrammeren of nog beter houd hem als reserve voor het geval er een ongelukje gebeurt door bijvoorbeeld een te hoge voedingsspanning waardoor de PIC van de Galva Wisp zelf stuk zou gaan Het wordt aangeraden altijd een voorgeprogrammeerde reserve PIC voor de Galva Wisp achter de hand te houden Kies voor C1 een radiale staand low voltage elco 6 3V of 10V anders past het niet op de Galva Wisp print

    Original URL path: http://www.picbasic.nl/galvawisp2.htm (2016-02-17)
    Open archived version from archive

  • PIC projects and programme in PIC Basic

    (No additional info available in detailed archive for this subpage)
    Original URL path: /home_boven_uk.htm (2016-02-17)


  • PIC projects and programme in PIC Basic
    a C take care that the wash program runs like the user has adjust it kept an eye on the temperature by information it becomes from a temperature sensor on his input and with his outputs it turns the wash tub left right and centrifuge put some water in the wash tub and pumps it away again etc The PICmicro controller is made by the American company MicroChip More about PIC controllers What is Proton PIC Basic Proton Proton is a Basic compiler from the British company Crownhill A compiler makes for you from a simple program language as Basic an assembly file so that you without much knowledge from assembly still can program PIC s on an easy way Proton PIC Basic looks like Q Basic and Quick Basic but is special made for programming PIC s that s why there are extra commands added to program a PIC If you have ever programmed a Basic Stamp then it makes it even more easier because the Proton compiler has almost the same commands a lot more However a Basic Stamp is expensive while you will have a PIC for a few dollar The Proton compiler itself is expensive to buy but after then you can write fast and easy PIC programs and you can download the latest version of the compiler always for free Most important benefit If you program in Basic you program for your hobby that means no complicate assembly or the C language where you rack your brains over No you write relaxed in your free weekend fast a PIC program and build things for your own which you steer with your own programmed PIC controller In a few minutes you can write a working program A few familiar statements IF THEN ELSEIF ENDIF SELECT CASE

    Original URL path: http://www.picbasic.nl/home_onder_uk.htm (2016-02-17)
    Open archived version from archive

  • PIC programmeren met PIC Basic (1)
    later ooit assembler met ASM ENDASM toevoegt hoef je niet meer om te schakelen omdat je het zo al gewend bent Pas op met GOTO Hierboven in het eerste voorbeeld wordt GOTO gebruikt Meteen is hier het advies om uit te kijken dat het geen wirwar van GOTO s wordt omdat bij veelvuldig gebruik het overzicht snel verloren gaat Het onderstaand programma laat de LED ook knipperen zonder GOTO maar met het commando WHILE WEND Wijzig het vorige programma in onderstaand programma DEVICE 16F628A We gebruiken een 16F628A type CONFIG INTRC OSC NOCLKOUT WDT OFF PWRTE ON LVP OFF MCLRE OFF ALL DIGITAL TRUE Alle ingangen digitaal WHILE 1 1 Zolang 1 gelijk is aan 1 TOGGLE PORTA 1 Aan moet uit uit moet aan DELAYMS 500 500 milliseconden 0 5 seconde WEND deze lus uitvoeren END Einde programma Het label Opnieuw en GOTO zijn vervangen door WHILE en WEND Dit commando voert het programma uit dat staat tussen de woorden WHILE en WEND hier het aan en uitzetten van een LED Dus WHILE zolang 1 gelijk is aan 1 WEND terug keren wenden altijd blijven knipperen dus WHILE kan dus niet functioneren zonder het woord WEND en horen dus altijd beide in een programma te staan anders krijg je een foutmelding Variabele Om de functie van WHILE WEND duidelijker te maken laten we de LED 4x knipperen als de spanning van de PIC wordt ingeschakeld Hiervoor moet er eerst een variabele worden aangemaakt Een variabele is een naam die een waarde kan onthouden in dit geval dus de tellerstand die het aantal keer dat de LED heeft geknipperd bijhoudt Hiervoor bestaat het commando DIM Met DIM maak je een variabele aan dim ensioneren of declareren genoemd met een zelf te verzinnen naam die ook weer logisch moet klinken in het onderstaand programma dus DIM LedTeller AS BYTE Wat is nu weer AS BYTE als byte Omdat een PIC maar een beperkt geheugenruimte heeft moet je opgeven tot hoever je denkt dat de teller kan lopen en een byte bestaat uit 8 bits 8 geheugenplaatsen waaruit 256 verschillende combinaties zijn te maken de teller kan dus tellen van 0 t m 255 niet 256 namelijk 1 t m 255 en de 256e is de waarde 0 Je kunt ook zetten DIM LedTeller AS BIT als bit dit neemt maar 1 geheugenplaats in maar dan kun je maar 2 toestanden bedenken namelijk 0 of 1 uit of aan en moet de LED meer dan 256x knipperen dan moet je schrijven DIM LedTeller AS WORD een word is 16 bits hierdoor kun je doortellen tot maarliefst 65535 maar dat neemt dan ook 2x zoveel geheugen in dan een byte Dan bestaat er in PIC Basic ook nog DWORD D ouble word die telt van 2147483648 t m 2147483647 maar neemt dan ook 32 geheugenplaatsen in 32 bits Ook is er nog DIM LedTeller AS FLOAT deze werkt met cijfers achter de komma float drijvend drijvende komma die neemt ook 32 bits in 2147483647 999 t m 2147483646 999 Aanbevolen wordt om DWORD en FLOAT zo weinig mogelijk te gebruiken omdat berekeningen hiermee veel programmageheugen van de PIC vragen met BIT BYTE en WORD is vrijwel alles te doen Tot slot is er ook nog AS STRING voor teksten op displays maar daarover later meer Zo dat was even doorbijten maar variabelen heb je vrijwel altijd nodig Wijzig het vorige programma in onderstaand programma DEVICE 16F628A We gebruiken een 16F628A type CONFIG INTRC OSC NOCLKOUT WDT OFF PWRTE ON LVP OFF MCLRE OFF ALL DIGITAL TRUE Alle ingangen digitaal DIM LedTeller AS BYTE Maak variabele met de naam LedTeller aan CLEAR Wis alle RAM geheugen Hoofdprogramma WHILE LedTeller 8 Zolang teller kleiner is dan 8 TOGGLE PORTA 1 Aan moet uit uit moet aan knipper DELAYMS 500 500 milliseconden 0 5 seconde LedTeller LedTeller 1 Teller met 1 verhogen WEND deze lus uitvoeren HIGH PORTA 1 LED uitzetten END Einde programma Aangezien de tellerwaarde hooguit 8 wordt want 4x de LED aan uit betekent 4x de LED aan en 4x de LED uitzetten om en om weliswaar kun je een byte gebruiken dus DIM LedTeller AS BYTE Dan een nieuw commando is CLEAR Clear vrij maken wissen zonder een variabele naam erachter wist de inhoud van alle variabelen niet de variabelen zelf maar de inhoud van elke variabele wordt dus 0 gemaakt terwijl CLEAR LedTeller alleen de inhoud van de variabele LedTeller wist op 0 zet Een goede gewoonte is om bovenin elk programma alle RAM geheugen te wissen door het commando CLEAR er neer te zetten zodoende begin je met alle waarden op 0 Dan het hoofdprogramma zoals de REM regel vermeldt WHILE LedTeller 8 wat zoiets betekent als zolang while de LedTeller kleiner is dan 8 moet het programmablok tot aan WEND worden herhaald In het blok wordt ervoor gezorgd dat de LedTeller steeds met 1 wordt verhoogt omdat anders de LedTeller altijd op 0 zou blijven staan en daardoor de LED nog steeds oneindig blijft knipperen Verhogen gaat alsvolgt LedTeller LedTeller 1 dat houdt dus in dat tel bij de waarde die de variabele LedTeller heeft er 1 bij en geef de uitkomst terug aan de variabele LedTeller zo wordt LedTeller steeds 1 hoger nadat de LED aan of uit is gezet Je kunt elke waarde er bij optellen zolang de uitkomst maar nooit hoger wordt dan 255 omdat je LedTeller als byte variabele hebt ge dim d Steeds als je de spanning op de PIC zet begint het programma bovenaan en blinkt de LED 4 keer daarna stopt het programma bij END Het komt heel vaak voor dat tellers met 1 verhoogt of verlaagt moeten worden daarvoor bestaan speciale commando s INC LedTeller doet hetzelfde als LedTeller LedTeller 1 inc rement verhogen DEC LedTeller doet hetzelfde als LedTeller LedTeller 1 dec rement verlagen Dit werkt dus alleen als een teller steeds maar met 1 verhoogt of verlaagt hoeft te worden Is de LedTeller 8 keer met 1 verhoogt dan

    Original URL path: http://www.picbasic.nl/beginners1.htm (2016-02-17)
    Open archived version from archive

  • Alles over printplaten etsen (met zo'n 150 foto's)
    woord geeft extra informatie door er met de muis op te gaan staan TIP3 Een 8 teken boven een foto geeft een extra foto door met de muis op die foto te gaan staan Als er een achter staat betreft de foto een detailvergroting Mensen zonder breedband moeten even wachten tot de extra foto verschijnt als ze op de foto gaan staan De foto hieronder is een voorbeeld 8 8 Het printproductie hoekje van boven naar beneden Etsbak printboormachine reinigingsmiddel ontwikkelaar zilvermiddel en UV belichtingsbak Dit is de print die we gaan maken deze gaan we eerst goed zwart maken Meer info layout afdrukken en zwarter maken Aftekenen en uitzagen Meer info zagen Verwijder het beschermfolie van de print Vervolgens met UV licht belichten Meer info belichten Ontwikkelen in NaOH vrije ontwikkelaar of gewone Caustic Soda Meer info ontwikkelen Na het ontwikkelen en afspoelen de print in de etsbak voor het daadwerkelijke etsen Meer info etsen Na het etsen en afspoelen kan de print geboord worden Meer info boren Wie het nodig vindt en voor een professioneel uiterlijk kan de print nog verzilveren Meer info verzilveren Nu kan de print gesoldeerd worden Meer info solderen Na het solderen en een

    Original URL path: http://www.picbasic.nl/etsen_menu.htm (2016-02-17)
    Open archived version from archive

  • Domotica: Huisautomatisering met PIC Basic
    stopt ook al is de toets nog steeds ingedrukt Wordt de toets dan losgelaten en opnieuw weer ingedrukt dan schakelt de luxaflex weer naar automatische mode en gaat de luxaflex met volle kracht 6VDC dicht als de LDR het aan geeft Luxaflex opent en sluit automatisch Overigens zit er een hysteresis van zowel helderheid als tijd een kwartier in de LDR zodat niet bij lichtbewolkt weer de luxaflex de hele dag open en dicht gaat Meer info hierover zie het luxaflex project Screens De bij de screen meegeleverde knop die bij mij niet gemonteerd is De ramen van de woonkamer zijn voorzien van een elektrisch buitenzonnescherm meestal screens genoemd Er wordt daar een schakelaar bijgeleverd zie foto rechts zodat de screen met de hand omhoog of omlaag kan worden bewogen maar deze heb ik natuurlijk niet gemonteerd De screen krijgt bij mij zijn opdrachten van de bus zodat alles invloed kan hebben op de screen Zo kan de screen bijvoorbeeld automatisch omlaag gaan als de PIC via de LDR meet dat de zonneschijn zeer groot is en automatisch omhoog bij regen of veel wind En door commando s van de Pronto Neo TV afstandsbediening of via telefoon De screen kan niet langs het klapraam als deze open staat en ook komt de screen tegen de buitendeur als deze open staat Maar nu de screen op de bus zit aangesloten is dit niet zo n probleem meer Als via de telefoon of met de Pronto Neo afstandsbediening op Screen omlaag wordt gedrukt dan kijkt de bus eerst of het klapraam open staat en zo ja dan zal de bus eerst het klapraam sluiten en dan pas de screen laten zakken Mocht nu ook de buitendeur open staan dan zakt de screen tot nét boven de buitendeur Dit wordt bereikt doordat de PIC inwendig een teller mee laat lopen die optelt als de screen naar beneden gaat en terugtelt als de screen naar boven beweegt Zo is de positie van de screen verdeelt in 2200 stukjes tellerstanden Als de teller nu groter dan tellerstand 275 is dan controleert de bus of de buitendeur gesloten is zo niet dan stoppen met screen zakken En zolang de tellerstand groter is dan 275 wil de screen niet omhoog of omlaag de buitendeur zal dus eerst gesloten moeten worden Mocht de screen al voorbij dit punt zijn en wordt de buitendeur dán pas geopend dan zal de screen onmiddellijk stoppen Dezelfde tellerstand wordt ook gebruikt voor het klapraam Zolang de teller groter is dan 0 bevindt de screen zich dus niet bovenin en kan het klapraam niet geopend worden niet handmatig en niet via automatische opdrachten De screen kan niet langs een geopend klapraam De screen stopt nét boven de deur als deze open staat Wordt via de bus de opdracht Beamer aan verzonden dan doet de betreffende PIC via de bus een lichtmeting met de LDR die op het zuiden staat Is het nog niet echt donker buiten dan wordt automatisch het commando Screen omlaag over de bus verzonden die op zijn beurt dus weer het klapraam kan sluiten en gaat kijken of de buitendeur gesloten is Verder beweegt op het beamer aan commando de poster naar de zijkant van de muur zodat een witte muur ontstaat gaat de spiegel open voor reflectie van het beamerbeeld en wordt natuurlijk de beamer zelf aangezet afijn zie hier meer info Huisbediening per telefoon Alles wat op de bus in het huis is aangesloten is te bedienen op afstand met een mobiele telefoon Dit wordt gedaan met behulp van de telefoonprint die de driecijferige opdrachtcodes rechtstreeks kan doorsturen naar de bus Hiervoor moet na een pincode op de toets worden gedrukt Een korte pieptoon zal door de bellende telefoon klinken en de telefoonprint zal nu het intoetsen van de opdrachtcode verwachten Op deze manier is alles te bedienen van verlichting tot ramen afzonderlijk van luxaflex tot transistorradio van een bepaalde temperatuursinstelling voor de Nefit thermostaat tot inschakelen van de slaapkamer airconditioning De drie meest gebruikte telefoon functies hebben een enkele toets 0 en 1 voor het bad vullen of annuleren 2 en 3 voor verwarming hoog of laag en toets 4 om de ramen te sluiten zie tabel hieronder Toets Functie 0 Annuleer automatisch badvullen voor deze dag stop eventuele bezig zijnde vullen 1 Bad vullen 2 Annuleer automatisch verwarming hoger voor deze dag zet verwarming op 15 C 3 Verwarming op 19 C 4 Annuleer automatisch ramen openen voor deze dag sluit openstaande ramen 5 9 Vrij voor toekomstig gebruik Toets om hierna rechtstreeks een driecijferig huis opdrachtcode in te toetsen Verbreek verbinding de telefoonprint zal de verbinding verbreken Het huis zal via de telefoonprint zelf een vooraf opgegeven mobiel nummer opbellen als een waterlekkage sensor in badkamer of keuken nattigheid voelt en een alarmsignaal laten klinken aan het gebelde nummer en tevens de hoofdwaterkraan dichtdraaien Eventueel is er in combinatie met de bewegingssensoren ook een stil alarm te maken die het mobiele nummer belt bij onraad Door een ander soort sirene naar de mobiele telefoon te zenden is uit te maken of het een inbraak of waterlekkage alarm is Pincode Om via de telefoon het huis te kunnen bedienen moet eerst een pincode op het toetsenbord van de telefoon worden ingevoerd De 4 cijferige pincode is mede afhankelijk van de DCF77 tijd en datum dus deze veranderd steeds Als er iemand opbelt dan vraagt de telefoonprint de datum en tijd op via de bus en rekent uit wat de pincode voor dat moment moet zijn Zo is het bijvoorbeeld te maken dat de eerste twee cijfers van de pincode gelijk is aan het hele uur van dat moment maal 2 plus 3 en de tweede twee cijfers de dagdatum min 1 Stel dat het 31 augustus 20 15 uur is De pincode is dan 4330 een uur later is ie veranderd in 4530 enzovoort Een dag later is de pincode rond dezelfde tijd 4300 Niet té ingewikkeld maken want dat werkt lastig dit voorbeeld vraagt al enig denkwerk Is de pincode driemaal fout dan verbreekt de telefoonprint de verbinding Meer info hierover zie het universele telefoonprint project FSK nummermelder Ook de losse nummermelder is in de afvalemmer beland Een eigen gebouwde FSK nummermelder is sinds kort toegevoegd aan het huis waardoor diverse mogelijkheden weer te bedenken zijn Zodra de telefoon gaat wordt het telefoonnummer direct op het huisdisplay getoond op de plaats van waar normaal wisselend de temperatuur van de kamer en de keuken staan Na 100 seconden wordt de temperatuur weer getoond en zal een knipperend telefoon symbool aangeven dat er één of meerdere nieuwe telefoonnummer s in het nummermelder geheugen aanwezig zijn Met de Pronto Neo afstandsbediening is nu door de aanwezige telefoonnummers van de nummermelder te bladeren en kan hiermee desgewenst het telefoonnummer ook weer uit het geheugen gewist worden Op het display is in het nummermelder menu te zien hoeveel telefoonnummers er aanwezig zijn bij welk telefoonnummer je op dat moment bent of het een nieuw telefoonnummer is en als het bekend is in de 24C512 EEPROM de naam die bij het telefoonnummer hoort Heerlijk lelijk zo n oude W65 In schril contrast met het automatische huis Zie dit project Maar nu het mooie Omdat de nummermelder nu is geïntegreerd in het huis kunnen er met de telefoonnummers allerlei acties worden gedaan Als ik bijvoorbeeld met mijn eigen mobiel naar huis bel ziet het huis meteen aan het telefoonnummer dat ik het ben en hoeft er bijvoorbeeld geen pincode te worden ingetoetst of misschien alleen een simpele het is maar hoe je het maakt En afhankelijk van het telefoonnummer laat ik de deurbel meebellen op diverse ding dong manieren Bij familie laat ik de deurbel heel snel ding dong ding dong ding dong bellen bij een telefoonnummer van het werk 1x langzaam ding dong en een snelle ding dong er meteen achteraan Zo weet ik al nog voordat ik op het huisdisplay heb gekeken of er een familielid belt iemand van het werk of totaal iemand anders Om het verschil te kunnen weten dat óf de telefoon gaat óf dat er iemand aan de deur staat te bellen zal in het geval van de deurbel door de PIC in de hal 2x een rustige ding dong worden gegeven Alleen bij een telefoonnummer van familie of het werk gaat ook een ringtoon in de slaapkamer opgewekt met PWM door de PIC die ook de gong van de wekker door dezelfde luidspreker laat klinken En ook dát kan weer uitgesplitst worden Bij telefoon van familie mag deze ringtoon altijd gaan bij telefoon van het werk alleen overdag na 07 00 verslapen al kan dat haast niet in dit automatisch huis zie Auping sensor En bij alle andere telefoonnummers gaat de ringtoon gewoon niet laat maar bellen de W65 telefoon zelf is niet hoorbaar in de slaapkamer Krijg ik een Privé nummer of nummer onbekend dan wil ik niet eens wéten wie er belt Vaak lastige vragen van enquêtes en dergelijke Wat kunnen we hiermee doen Allereerst hoef ik zelf niet te weten dat de telefoon gaat dus de deurbel blijft uit De telefoon wordt echter wel aangenomen niet door mij maar door het huis zelf Dit gebeurt doordat de universele telefoonprint van de master PIC de opdracht krijgt de telefoon meteen op te nemen en hierna een hinderlijke pieptoon naar de onbekende beller te sturen net zo lang tot deze ophangt Dat zal ze leren Wat is nog meer mogelijk met de nu geïntegreerde nummermelder Bij thuiskomst merken de infrarood sensoren me op Als er nu gebeld is terwijl ik niet thuis was laat het huis dit weten door een kort buzzerpiepje bij binnenkomen van de woonkamer Hierdoor weet ik dat er voor me gebeld is en er even in het nummermelder menu moet worden gekeken wie er gebeld heeft De FSK nummermelder zal hier als los project verschijnen zodra ik tijd heb om het te documenteren en uit te werken Badkamer De automatische badkamer is al meer dan 10 jaar geautomatiseerd en was mijn allereerste microcontroller project uitgevoerd met een BS2e Basic Stamp De Basic Stamp regelt het volgende in de badkamer Het bad is te vullen resp te stoppen door de Pronto Neo TV afstandsbediening vanuit woonkamer of keuken door DCF77 ingestelde dag datum tijd telefonisch op afstand vanuit de slaapkamer en in de badkamer zelf natuurlijk zie foto waterdicht paneel Het automatisch bad vullen door een ingestelde DCF77 tijd is telefonisch te annuleren De badstop afvoer sluit zichzelf automatisch na een paar seconden als het bad zich vult met water Wordt er binnen die tijd dus vóór dat de badstop afvoer zich sluit op toets legen gedrukt dan sluit de badstop zich niet het bad kan afgespoeld worden In dit geval stopt de kraan automatisch na 30 seconden Het openen sluiten van de badstop wordt gedaan door een 12VDC RB35 motor welke ook is te bedienen met de toets legen Als het bad vullen minimaal 5 minuten bezig is dan gaat het mechanische ventilatiesysteem van de woning op maximale ventilatie draaien Maar eventjes de badkraan gebruiken heeft dus geen invloed op het ventilatiesysteem in huis Na het leeg lopen van het bad draait het ventilatiesysteem nog zo n 20 minuten door op maximale snelheid daarna weer op normale snelheid Tevens schakelt het hele Basic Stamp systeem zichzelf dan uit spanningsloos Het ventilatiesysteem is niet handmatig uit te schakelen tijdens vullen of als er water in het bad aanwezig is behalve als de elektrische badkamer verwarming wordt ingeschakeld In dat geval wordt na 10 seconden de luchtverversing stopgezet anders zou de warmte meteen worden afgevoerd De elektrische badkamerverwarming schakelt zichzelf na 5 minuten uit als dit niet eerder handmatig is gedaan Nadat de elektrische verwarming is uitgezet schakelt het ventilatiesysteem zich na 10 minuten weer in maar is handmatig eventueel eerder in te schakelen Het bad vullen stopt automatisch op een vooraf ingesteld niveau door een QT114 sensor die het waterniveau meet In de woonkamer klinkt 3 een lange pieptoon ten teken dat het bad gereed is Komt dit signaal van de QT114 sensor niet binnen een bepaalde tijd dan zal het bad vullen alsnog worden gestopt In de woonkamer zal dan 5 een korte pieptoon klinken ten teken dat er tijdens het bad vullen iets niet goed verloopt Als de water temperatuur te hoog is gemeten met een 8 pins DS1620 geplakt aan de buitenkant van het bad dan wordt het bad vullen ook gestopt en klinkt in de woonkamer 10 een korte pieptoon Waarschijnlijk staat de thermostaatkraan op een te hoge temperatuur ingesteld De temperatuur aan de buitenkant van het bad is natuurlijk lager dan het water zelf Het Basic programma rekent het echter weer terug tot de werkelijke watertemperatuur geijkt Wel belangrijk bleek om de DS1620 sensor te omhullen met glaswol isolatie materiaal anders wijkt de temperatuur s winters af omdat dan de omgevingstemperatuur in de badkamer lager is Op het bedieningspaneel wordt de watertemperatuur weergegeven in de vorm van een LED dotbar De schaal naast de zeven LED s is 36 C 36 C 37 C 38 C 39 C 40 C 40 C Als de watertemperatuur warmer is dan 40 C dan knippert de bovenste 40 C LED en stopt het automatische vullen In de woonkamer gaat dan 10 een korte pieptoon ten teken dat het badwater te heet is De kraan is hierna wél weer opnieuw in te schakelen anders zou je geen koud water kunnen bijvullen Water bijvullen kan ook als de QT114 sensor meet dat het bad vol is Echter wordt in dat geval na 2 5 minuut het vullen automatisch gestopt als al niet eerder met de hand wordt uitgeschakeld Dit is gedaan omdat meestal heet water wordt bijgevuld om de temperatuur van het water weer wat hoger te maken Mocht je nu in slaap vallen dan zou je het risico lopen om door kokend heet water bedwelmd te raken Nu niet omdat het bijvullen na 2 5 minuut automatisch stopt De whirlpool hydro het bubbelbad aëro en de twee dimbare halogeen onderwaterspots in het ligbad zijn alleen in te schakelen als de QT114 sensor meet dat het bad gevuld is met water en gaan automatisch uit als het water in het bad zakt onder een bepaald niveau De hydro motor mag namelijk niet draaien als er geen water door de pomp loopt en de 12V 50W spots moeten door het badwater gekoeld worden De 230V motor van de whirlpool is traploos in snelheid te regelen Via een DAC geeft de Basic Stamp een spanning van 0 10 volt aan een kleine frequentieregelaar door Een deel van het programma van deze besturing wordt beschreven in cursus deel 7 Op de TL verlichting onder het bad na is alle verlichting in de badkamer te dimmen 4 dimmer groepen Als default worden bij lichtschakelaar aan alleen de halogeenspots boven ligbad en wastafel opgestart Zit er geen water in het ligbad dan wordt de verlichting al na 10 minuten automatisch uitgezet bij vergeten uit te doen en klinkt er een kort piepje in de woonkamer Zit er wél water in het bad dan is deze tijd maarliefst 5 uur Deze tijden worden steeds weer op maximaal gezet als er op een willekeurige toets van het waterdichte paneel wordt gedrukt Mocht de badstop dicht zitten dan opent deze automatisch als de lichtschakelaar van de badkamer wordt aangezet maar doet dat niet als het bad bezig is met vullen of als het bad vol is Als de lichtschakelaar wordt aangezet én er zit water in het bad of het bad is bezig met vullen dan worden automatisch de luidsprekers ingeschakeld aan de versterker in de woonkamer Wordt de lichtschakelaar uitgezet dan worden de luidsprekers weer afgeschakeld Met toets Audio is het in en uitschakelen van de luidsprekers handmatig te doen Audio is niet in te schakelen als de lichtschakelaar uit is De volume wordt geregeld door een groot formaat stereo potmeter die met een motor verbonden is Telkens als er op de volume toets wordt gedrukt zal de motor een andere kant opdraaien Zo is er te togglen tussen volume harder en zachter met maar één toets zie ook cursus deel 8 De audio toets is tevens testknop Bij gelijktijdig indrukken met de ligbaddimmer toets is de halogeen onderwater verlichting aan te zetten ook als er geen water in het bad zit Bij gelijktijdig indrukken met de hydro toets zal de 230V motor van de bubbeljets langzaam gaan draaien ook als er geen water in het bad zit Achter de spiegel zit een verwarmingsspiraal die voorkomt dat de spiegel met damp beslaat Deze spiegelverwarming gaat pas aan als het bad leeg loopt klaar met bad nemen Het bad moet dus eerst vol zijn geweest daarna zowel de QT114 sensor meten dat het bad niet vol meer is én moet de badstopafvoer geopend zijn De spiegelverwarming gaat weer uit zodra de lichtschakelaar van de badkamer uit wordt gezet Bij normaal gebruik van de badkamer zonder een bad te nemen blijft de spiegelverwarming dus uit De besturing van de badkamer neemt in stand by stand 0 Watt op energie zuinig De Basic Stamp taal is vrijwel identiek aan die van PIC Basic alleen is PIC Basic veel en veel uitgebreider Het waterdichte bedieningspaneel is de bodem van een kunststof bimbox Hierin zijn gaten geboord voor de folietoetsen en LED s Elke folietoets steekt zo n 0 2mm boven het oppervlak uit Daaroverheen is wit bedrukt stickerpapier opgeplakt met daar weer overheen transparantfolie voor de watervastheid De rode LED s schijnen door het witte stickerpapier heen Het zit er al meer dan 10 jaar en nog steeds geen slijtageplekken Ventielen en leidingen onder de wastafel Normaal niet zichtbaar Op de vloer zit een watersensor die bij lekkage een melding op de bus geeft waardoor de PIC in de hal de hoofdwaterkraan zal dichtdraaien De thermostaatkraan staat altijd open en is ingesteld op een aangename temperatuur rond 37 C Vóór de thermostaatkraan zitten twee wasmachine ventielen voor warm en koud water met 12VDC spoelen zie foto die door de besturing worden aangestuurd De schakeling neemt stand by 0 Watt op Met behulp van een korte hulpspanningspuls van de databus wordt het systeem ingeschakeld Een solid state relais aangestuurd door de Basic Stamp zelf fungeert hier als overneemcontact die de voeding van de Basic Stamp zelf inschakelt na de korte puls De Basic Stamp schakelt zijn eigen voeding weer uit als de lichtknop buiten de badkamer van aan naar uit wordt gezet behalve als de kraan loopt of als er water in het bad aanwezig is Maar ook als er 5 uur lang geen toetsindruk op het bedieningspaneel is vernomen schakelt de Basic Stamp zichzelf uit ongeacht of er wel of geen water in bad zit Als het badwater aan de andere zijde van de opgeplakte printstrook dezelfde hoogte bereikt stopt het vullen Slangen zijn van het bubbelbad Zowel de DS1620 watertemperatuurmeter als de voeler voor de QT114 waterniveau meting zitten aan de buitenkant van het bad geplakt onzichtbaar van buitenaf De waterniveauvoeler voor de QT114 is niets anders dan een strook ongeëtste printplaat 100 5mm met daaraan een dun soepel draadje gesoldeerd die naar pin 7 van de QT114 loopt Deze printstrook is eerst met een föhn goed warm gemaakt meteen daarna aan de ongeëtste koperzijde vol met hotmelt gesmeerd en daarna direct tegen de buitenkant van het ligbad geplakt even 1 minuut vast houden Zodra het waterniveau in bad tijdens vullen op gelijke hoogte komt als de opgeplakte print aan de buitenkant van het bad contactloos dus geeft de QT114 een signaal aan de Basic Stamp die op zijn beurt de ventielen uit zet en een seintje in woon en slaapkamer geeft De werking berust op verandering van capaciteit door het badwater aan de andere kant van de voeler en heeft veel overeenkomsten met de houten aanraaksensor van het automatisch handdoekrek en de automatische theezetter welke gebaseerd zijn op een QT110 Download datasheet QT114 Vloerverwarming 8 In de keuken bevindt zich onder het laminaat een elektrische 230V verwarming dat via een solid state relais op de bus is aangesloten Hierdoor heeft ook de vloerverwarming beschikking over alle sensoren afstandsbedieningen data en tijd van het huis Zo kan bijvoorbeeld via infrarood Bluetooth of Wifi afstandsbedieningen de vloerverwarming worden ingeschakeld waarna het na een aantal uur weer automatisch uitschakelt Ander voorbeeld een vast ritueel is om zaterdag s morgens af te wassen De vloer kan kijken hoe laat en welke dag het is of het koud is zomers graag géén vloerverwarming en als de persoon nog in bed ligt Auping sensor het verwarmen uitstellen Philips Pronto Neo afstandsbediening Omdat alles in huis dat met de bus is verbonden met elkaar gegevens kan uitwisselen is ook alles met een afstandsbediening te bedienen Hiervoor maak ik gebruik van een Pronto Neo afstandsbediening van Philips Niet alleen de TV beamer audiotoren harddiskrecorder en DVD recorder is hiermee te bedienen maar ook het hele huis Bij mij ligt de tafel dus niet vol verschillende afstandsbedieningen maar alleen de Pronto Neo Het voordeel van de Pronto Neo is ondermeer dat je zelf het aanraakscherm kan ontwerpen op de PC Ontwerpprogramma NEOedit voor de RU930 Pronto Neo afstandsbediening Philips Pronto Neo RU930 Voor het openen of sluiten van het keukenraam druk je dus op de virtuele toets waarop staat Keukenraam Het bladeren door het nummermelder menu het instellen van de wekkers al dit soort zaken gaan allemaal via deze afstandsbediening Nu is de RU930 al een vrij oude Pronto Neo destijds geleverd bij mijn beamer De nieuwste Philips Pronto Neo s hebben een aanraakkleurenscherm met veel hogere resolutie Meer info Pronto Neo Philips MFB 9638 luidsprekerboxen In de woonkamer en de werkkamer staan bij elkaar vier actieve MFB luidsprekerboxen De luidsprekerboxen op de werkkamer zijn normaal spanningsloos om stroom te besparen geschakeld via een solid state relais en de bus van het huis Als er op de werkkamer gewerkt gaat worden moeten deze luidsprekerboxen worden ingeschakeld met de Pronto Neo afstandsbediening Ook het uitschakelen kan via deze afstandsbediening worden gedaan Wordt dit echter vergeten dan zal het huis s avonds om 22 00 uur alsnog de 230V van deze luidsprekerboxen uitschakelen Het PIC Basic gedeelte Hier in het kort zowel het PIC Basic zend als het ontvanggedeelte dat in elke PIC bij me thuis is geprogrammeerd en dat werkt met de simpele verbinding dat in het schema bovenaan deze pagina staat Het voorbeeld hieronder is gemaakt voor de 16F628A maar werkt op de andere PIC types op precies dezelfde manier Alleen de 16F676 heeft geen USART daar wordt de ontvangst dan ook niet gedaan met HSERIN maar met de softwarematige variant SERIN Elke data overdracht over de bus bestaat bij mij uit 16 bits 8 bits BYTE voor de opdrachtcode bijvoorbeeld waarde 60 betekent kamerraam openen waarde 61 betekent kamerraam sluiten en 8 bits voor een eventuele extra waarde meestal zijn deze 8 bits dus 0 De extra waarde kan bijvoorbeeld nodig zijn als de ene PIC de temperatuur wil weten van een sensor die op een andere PIC aangesloten zit De eerste PIC zend dan de code van opdracht Request buitentemperatuur over de bus De PIC die deze functie heeft stuurt de code terug met nu in de tweede BYTE de gemeten waarde in dit geval de temperatuur dus Oja de LITE versie van Proton PIC Basic ondersteunt geen 16MHz kristal hier dus een 20MHz kristal of resonator bij elke PIC plaatsen En als je het geheel bouwt op een breadboard met de PIC s dus kort naast elkaar dan mag i p v de 12V ook 5V oftewel de voedingsspanning van de PIC s worden gebruikt Als je echter meerdere meters kabel tussen de PIC s onderling hebt adviseer ik een hogere spanning 12V is de spanning die ik gebruik in huis zie het schema bovenaan deze pagina DEVICE 16F628A We gebruiken een 16F628A type CONFIG HS OSC WDT OFF PWRTE ON LVP OFF BODEN OFF MCLRE OFF DECLARE ALL DIGITAL TRUE Alle ingangen digitaal DECLARE XTAL 20 Gebruik een kristal van 20MHz DECLARE HSERIAL BAUD 2400 Transmissiesnelheid van de data over de bus DECLARE HSERIAL RCSTA 10010000 Bit7 Enable serial port Bit4 Continu ontvangen DECLARE HSERIAL TXSTA 00000000 Bit5 Transmitpin uitgeschakeld TXEN Transmit ENable 0 INCLUDE c PIC programmas Woning opdrachtnamen inc Logische constanten SYMBOL HOOG 1 Hoog niveau SYMBOL LAAG 0 Laag niveau Algemene constanten SYMBOL Baud2400I 16780 2400 Baud Inverted baudrate voor SEROUT Poortnamen SYMBOL LED PORTA 0 Hierop een LED met serieweerstand aansluiten SYMBOL Toets PORTB 0 Toets voor verzenden van een waarde over de bus SYMBOL SerieelIn PORTB 1 Ontvangt via HSERIN data van de bus B 1 USART ingang RX SYMBOL SerieelUit PORTB 2 Stuurt via SEROUT data naar de bus B 2 USART uitgang TX Variabelen declareren BYTE DIM Opdracht AS BYTE Bevat de laatst ontvangen opdrachtcode DIM Waarde AS BYTE Eventueel retour gezonden waarde zoals gemeten LDR waarde 76543210 PORTA 00000001 LED voor dit voorbeeld aanzetten PIC opstart controle PORTB 00000000 PORTB poorten laag TRISA 11111110 A 0 is uitgang voor de LED in dit voorbeeld TRISB 11111111 USART uitgang B 2 moet in rust hoog ohmig zijn DECLARE PORTB PULLUPS ON PORTB pull ups geactiveerd voor de toets CLEAR Wis alle RAM geheugen DELAYMS 500 Stabilisatie signalen en voorbeeld LED opstart tijd LED LAAG Zet LED van PIC opstart controle uit poort LAAG maken GOTO HoofdLus Spring over subroutine s SUBROUTINE S ZendBus De bus die door het huis loopt RCSTA 00000000 Zet USART uit anders ontvangt deze zijn eigen verzonden data SEROUT SerieelUit Baud2400I Opdracht Waarde Geinverteerd verzenden vanwege BC547 RCSTA 10010000 Schakel USART weer in zodat de PIC weer data kan ontvangen INPUT SerieelUit Maak TX poort hoog ohmig door er een ingang van te maken RETURN HOOFDPROGRAMMA HoofdLus CLEAR Opdracht Opdracht na uitvoering wissen CLEAR Waarde Idem voor Waarde HSERIN 7 Verder Opdracht Waarde Time out staat op 7mSec GOTO OpdrachtUitvoeren Voer opdracht uit Verder In het geval van een time out van HSERIN hier verder gaan WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Voorbeeld voor de picbasic nl site om te experimenteren zelf uitbreiden Onderstaand stukje staat dus niet in het programma bij mij thuis IF Toets LAAG THEN Als toets wordt ingedrukt dan Opdracht 26 Verzendt waarde 26 over de bus GOSUB ZendBus DELAYMS 20 Antidender voor indrukken van de toets WHILE Toets LAAG WEND Wacht tot toets wordt losgelaten anders blijft hij zenden DELAYMS 20 Antidender voor loslaten van de toets ENDIF WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Op deze plek staat bij mij in de 18F452 semi master PIC een oneindige lus waarin continu DCF77 tijd en temperatuur wordt bijgehouden en op display wordt weergegeven alsook de twee 74HC165 schuifregisters continu worden ingelezen 16 extra ingangen alsook of er een IR opdracht van de afstandsbediening binnenkomt in keuken TSOP1736 Komt er een opdracht binnen via 1 van deze inlezingen dan GOTO OpdrachtUitvoeren alwaar de opdracht door een SELECT CASE lijst wordt afgehandeld Na OpdrachtUitvoeren springt het programma weer terug naar HoofdLus Op deze plek buiten bovenste lus staan timerfuncties die 1x per minuut wordt doorlopen Dit gaat simpel met een SELECT CASE lijst waarin alle tijden staan Als de tijd overeenkomt met een timerinstelling wordt de bijbehorende opdracht uitgevoerd Daarna meteen weer terug naar HoofdLus waar het programma weer wacht op een opdracht GOTO HoofdLus OpdrachtUitvoeren SELECT Opdracht Deze SELECT lijst bepaalt wat een ontvangen opdracht gaat doen CASE 26 Als de waarde 26 is ontvangen van de bus dan LED LED de LED aan of uitzetten togglen CASE 120 Als waarde 120 is ontvangen dan LED HOOG de LED aanzetten poort een HOOG niveau geven CASE 121 Als waarde 121 is ontvangen dan LED LAAG de LED uitzetten poort een LAAG niveau geven END SELECT GOTO HoofdLus Ga weer naar de oneindige hoofdlus Bovenstaand PIC Basic programma bevat dus zowel het zend als het ontvanggedeelte Als je dit voorbeeld wilt testen samen met het schema bovenaan deze pagina dan moet dit programma dus in alle PIC s worden geprogrammeerd Let even op als je dit gaat compileren krijg je een foutmelding vanwege het INCLUDE bestand dat natuurlijk niet op je PC aanwezig is Deze kun je dan gewoon weghalen uit dit programma Meer info over wat INCLUDE hier doet Het programma hierboven is ingesteld voor een 20MHz kristal de LITE versie ondersteunt geen 16MHz dit aanpassen als je een ander type kristal of resonator gebruikt Nogmaals de melding dat gebruik van de interne oscillator resulteert in een onbetrouwbaar werkend geheel gebruik dus altijd een kristal als je een verbinding met iets anders of PIC s onderling maakt De snelheid voor de bus is ingesteld op 2400Baud door HSERIAL BAUD 2400 voor de USART en dus de hardwarematige instructie HSERIN en door SYMBOL Baud2400i op 16780 2400 Baud geïnverteerd voor de softwarematige instructie SEROUT Een opdrachtcode 0 255 over de bus verzenden gaat hier als volgt Opdracht 63 Eerst aan variabele Opdracht de te verzenden waarde geven GOSUB ZendBus En dan met subroutine ZendBus waarde over de bus verzenden In het INCLUDE bestand Woning opdrachtnamen bas staat een lijst met waarden 1 254 die met SYMBOL een naam hebben gekregen zodat ik in plaats van het getal 63 nu gewoon in kan vullen Opdracht RaamKeukenSluiten en daarna door GOSUB ZendBus de opdracht over de bus te laten verzenden Onderstaand stukje code is dus precies hetzelfde als bovenstaand stukje code Opdracht RaamKeukenSluiten Geef variabele Opdracht om het keukenraam te sluiten GOSUB ZendBus Subroutine ZendBus verzendt de opdracht over de bus Als in elk PIC programma de lijst met opdrachtnamen in het programma zelf wordt opgesomd loop je de kans dat je per ongeluk verschillen in de lijsten in de PIC s onderling maakt Bovendien moet je bij een wijziging in de opdrachtennamenlijst van elke PIC die op de bus zit aangesloten de PIC Basic programma s nalopen terwijl met gebruik van INCLUDE dit alleen in het INCLUDE bestand zelf hoeft te gebeuren De lijst in het INCLUDE bestand wordt door alle PIC s die op de bus zijn aangesloten gebruikt waardoor er geen verschillen kunnen ontstaan Deze lijst neemt geen bit extra geheugen in van de PIC omdat de lijst alleen door de compiler wordt gebruikt Opmerking INCLUDE werkt niet in de LITE versie van Proton PIC Basic De subroutine ZendBus Omdat zowel zenden als ontvangen bij de bus over dezelfde draad gaat schakelt subroutine ZendBus de USART eerst uit voordat de data met SEROUT over de bus wordt verzonden Als ie dat niet zou doen dan zou de USART zijn eigen verzonden data terug ontvangen Meteen hierna schakelt instructie SEROUT TX zendpoort PORTB 2 met de naam SerieelUit om van ingang naar uitgang en verzendt eerst bytevariabele Opdracht en daarna bytevariabele Waarde over de bus in totaal 16 bits dus Meteen na SEROUT wordt de USART weer ingeschakeld voor ontvangst Daarna wordt TX zendpoort PORTB 2 hoog ohmig gemaakt met instructie INPUT Als INPUT SerieelUit er niet stond dan zou de poort de bus blokkeren omdat de poort als uitgang zijnde een continu hoog of laag niveau heeft en daarmee de bus continu hoog of laag houden By the way omdat hier geen gebruik wordt gemaakt van de USART om data te verzenden alleen voor ontvangen is TXSTA hier uitgeschakeld HSERIAL TXSTA 0 Voorbeeld om zelf te experimenteren Verbind voor dit voorbeeld twee PIC s aan elkaar volgens het eerste schema bovenaan deze pagina Sluit bij beide PIC s een LED aan met 1k serieweerstand tussen PORTA 0 en GND Programmeer bovenstaand programma in beide PIC s Dit voorbeeld moet als volgt werken ervan uitgaand dat er twee PIC s zijn aangesloten dit kun je later na de test met meer PIC s uitbreiden Door ingang PORTB 0 met naam Toets van de eerste PIC een lage puls te geven moet de LED van de tweede PIC aan of uit gaan Andersom moet dit ook werken dus bij de tweede PIC een lage puls op PORTB 0 geven zal de eerste PIC zijn LED aan of uit zetten Dit werkt zo omdat bij een lage puls op poort Toets van een PIC deze PIC opdrachtcode 26 over de bus zal zenden De andere PIC zal 26 ontvangen via de bus en in de opdrachtlijst staat dat ie met opdrachtcode 26 de LED moet togglen Aangezien beide PIC s hetzelfde programma hebben werkt dit dus in beide richtingen Experimenteer door andere waarden over de bus te zenden en in de SELECT CASE lijst andere opdrachten bij te verzinnen Als voorbeeld staan al voor opdrachtcode 120 dat de LED aan moet worden gezet en dus aanblijven als ie al aan staat en voor opdrachtcode 121 de LED uitzetten en uit laten als ie al uit is Deze regels zijn in het voorbeeld tijdelijk uitgeschakeld omdat het programma anders te groot is voor de LITE versie als je de volledige versie hebt kun je de beide CASE 120 en CASE 121 activeren en of zelf opdrachtcodes toevoegen Tussen de PIC s onderling mag verscheidene meters afgeschermde kabel zitten bij mij 25 meter zie voor info het verhaal bovenaan deze pagina Werkt het niet Controleer het volgende Blinken de LED s van de aangesloten PIC s op PORTA 0 een halve seconde als de voedingsspanning wordt ingeschakeld De LED moet even blinken als controle dat de PIC opstart in dit voorbeeld Heeft de bus een hoog 12V of laag 0V niveau De bus moet in rust ongeveer 12V zijn Als de bus bijna 0V is dan is één of meer van de BC547 transistoren in geleiding PIC uitgang PORTB 2 aansturing van de BC547 moet in rust een laag niveau hebben Sluit voor controle een LED met serieweerstand van 2k2 3k9 tussen de bus en 12V Steeds als er data over de bus gaat door PORTB 0 van één van de PIC s laag te maken moet de LED heel kort opblinken De LED mag sowieso niet continu branden want dan is er dus een transistor continu in geleiding zie vorige aanwijzing Opdracht en Waarde in totaal 16 bits worden bij 2400Baud in een kleine 6 7mSec verzonden De timeout van HSERIN is daarom op 7mSec ingesteld USART met interrupt en extra softwarematige buffer Sommige opdrachten kunnen wat langer duren bijvoorbeeld raam sluiten met PWM regeling Door het plaatsen van een softwarebuffer kan de PIC in onderstaand voorbeeld tot vier opdrachtcodes onthouden terwijl de PIC bezig is met het uitvoeren van een andere tijdrovende opdracht Na het uitvoeren van die opdracht wordt gekeken of er nog meer opdrachten in de buffer staan door IF Buffer 0 0 THEN en als dat het geval is deze gaan uitvoeren De meeste opdrachten zijn overigens geen tijdrovende opdrachten ik heb het huis het eerste half jaar zonder deze buffer laten werken zonder problemen Toen stuurde ik echter nog geen WORD 16 bits maar een BYTE 8 bits over de bus waardoor de USART als buffer diende De hardwarematige buffer van de USART is een buffer die 16 bits dus destijds twee BYTE opdrachten kan opslaan DEVICE 16F628A We gebruiken een 16F628A type CONFIG HS OSC WDT OFF PWRTE ON LVP OFF BODEN OFF MCLRE OFF DECLARE ALL DIGITAL TRUE Alle ingangen digitaal DECLARE XTAL 20 Gebruik een kristal van 20MHz DECLARE HSERIAL BAUD 2400 Transmissiesnelheid van de data over de bus DECLARE HSERIAL RCSTA 10010000 Bit7 Enable serial port Bit4 Continu ontvangen DECLARE HSERIAL TXSTA 00000000 Bit5 Transmitpin uitgeschakeld TXEN Transmit ENable 0 ON INTERRUPT GOTO InterruptAfhandeling Spring naar label als data is ontvangen door de USART INCLUDE c PIC programmas Woning opdrachtnamen inc Logische constanten SYMBOL HOOG 1 Hoog niveau SYMBOL LAAG 0 Laag niveau Algemene constanten SYMBOL Baud2400I 16780 2400 Baud Inverted baudrate voor SEROUT Poortnamen SYMBOL LED PORTA 0 Hierop een LED met serieweerstand aansluiten SYMBOL Toets PORTB 0 Toets voor verzenden van een waarde over de bus SYMBOL SerieelIn PORTB 1 Ontvangt via HSERIN data van de bus B 1 USART ingang RX SYMBOL SerieelUit PORTB 2 Stuurt via SEROUT data naar de bus B 2 USART uitgang TX Variabelen declareren WORD ARRAY DIM Buffer

    Original URL path: http://www.picbasic.nl/huis-automatisering.htm (2016-02-17)
    Open archived version from archive



  •