Collega's die me steeds met het theezakje in de thee zagen dippen zeiden dat ik zoiets toch automatisch moest maken.
Dus voor de gein deze "broodtrommel" gemaakt, met PIC besturing en geprogrammeerd in PIC Basic.
Sommige theesoorten (zoals groene en witte thee) moeten lang getrokken worden.
Door het theezakje continu in beweging te houden is de thee eerder op sterkte (en leuk om naar te kijken).
Het elastiekje zit er voor de sier om, het versterkt het "broodtrommel" effect.
Dit project lijkt oninteressant maar bevat een paar geinige oplossingen, toch maar even doorlezen dus.
De besturing werkt op oplaadbare batterijen,
waardoor er een oplossing moest worden gevonden om de stroomopname tot een minimum te beperken als het apparaat stand-by staat,
het heeft namelijk geen hoofdschakelaar, sterker nog, het heeft helemaal geen toetsen (verderop meer info hierover).
Na iedere actie (arm in- of uitklappen of theedippen) wordt de spanning van de servomotor uitgeschakeld en
met de PIC Basic instructie SLEEP wordt de besturing in slaap gebracht om de batterijen te sparen.
Met een lage puls van een QT110 IC op PORTB.0 wordt het apparaat steeds uit slaap gehaald (door een interrupt) en in werking gesteld.
Bediening
Als de bovenkant van het apparaat wordt aangeraakt, ontwaakt de PIC even uit zijn slaap,
draait de arm naar buiten en valt meteen daarna weer in slaap.
Het apparaat moet hierbij rechtop staan, anders reageert het niet.
Het apparaat heeft geen schakelaars, aanraken is voldoende.
1. Ophangen. |
2. In laten trekken. |
3. In water dippen. |
4. Thee klaar. |
1. | Eerst het theezakje ophangen door het touwtje in de zaagsnede te plaatsen. |
2. | Daarna (opnieuw) de bovenkant van het apparaat aanraken waardoor de besturing weer ontwaakt. De arm zakt nu langzaam en wacht tien seconden zodat het water in het theezakje kan trekken. Het theezakje drijft namelijk als het zakje droog is. |
3. | Na die tien seconden wordt het zakje 20× of 200×, afhankelijk van de keuze*), in het theewater gedipt. |
4. | Daarna wordt het theezakje langzaam uit de thee gehaald. Een gong (met HPWM) klinkt door het luidsprekertje om te melden dat de thee klaar is. Hierna valt de besturing weer in slaap (door instructie SLEEP). De arm wordt daarbij niet naar binnen gedraaid (anders zou het de thee omgooien). |
*) Bij punt 2 kan er een keus gemaakt worden tussen 20× of 200× dippen.
Door na het aantippen van de bovenkant binnen een seconde de bovenkant opnieuw aan te raken kan er om en om gekozen worden tussen 20× of 200× dippen.
De keuze wordt kenbaar gemaakt door het aantal piepjes door de luidspreker.
Klinkt er één piepje, dan wordt er 20× gedipt.
Door nog een keer de bovenkant aan te tippen klinken er twee piepjes; er zal 200× worden gedipt (= 10 minuten).
Nóg een keer aanraken en er zal weer maar één piepje klinken, enzovoort,
zo kan er worden "getoggled" tussen 20× en 200× theedippen.
Als het apparaat met theezetten (dippen) bezig is,
is het mogelijk dit eerder te stoppen door de bovenkant van het apparaat nog eens aan te raken.
Het theezakje wordt dan langzaam uit de thee gehaald en het apparaat valt meteen weer in slaap.
De arm kan alleen worden ingeklapt als het apparaat plat ligt.
Nadat het apparaat plat is neergelegd, moet de bovenkant (nu dus zijkant) worden aangeraakt.
Er klinkt dan door het luidsprekertje een alarmsignaal (pas op je vingers!) en zal na één seconde de arm helemaal in de behuizing verdwijnen.
In die seconde tijd is het nog mogelijk om het inklappen te voorkomen door binnen die tijd nog een keer het apparaat aan te raken.
Of het apparaat plat ligt of rechtop staat wordt gedetecteerd door een hellingschakelaar.
Als het apparaat plat ligt, verbindt de hellingschakelaar PORTB.1 met GND waardoor de PIC weet dat het (na aanraken van de sensor) de arm in kan klappen.
Bij uitklappen geldt dat het apparaat juist rechtop moet staan.
De ouderwetse kwikschakelaar. Het kwik ligt altijd onderin. Links maakt het kwik contact, rechts niet. |
Met een hellingschakelaar wordt bepaalt of het apparaat rechtop staat of plat ligt. Links maken de draden onderling contact, rechts niet. |
Een hellingschakelaar is de vervanging van de vroegere kwikschakelaar, die niet meer als nieuw verkocht mag worden (milieu).
De hellingschakelaar is verkrijgbaar bij Conrad, bestelnr. 70 04 44.
Het apparaat werkt op vier oplaadbare(!) batterijen.
De PIC16F628A wordt daarom steeds na iedere actie meteen weer in slaap gebracht (low-power mode),
anders zijn de batterijen binnen een paar dagen leeg.
Hiervoor schakelt de PIC eerst de voeding naar de servomotor uit.
Daarna wordt een voorbereiding getroffen om de PIC straks weer uit zijn slaap te kunnen halen door een interrupt op PORTB.0
(een puls, gegeven door de QT110 aanraaksensor).
Nu wordt met de instructie SLEEP de PIC in low-power mode gebracht.
Het stroomverbruik is nu nog maar een paar microampère (µA).
Zorg er bij een PIC op batterijvoeding wel voor dat de fuse brownout detection enabling is uitgeschakeld
(in de CONFIG van een 16F628A is dat BODEN_OFF).
De QT110 blijft stand-by om in de gaten te houden of iemand het apparaat aanraakt.
Dit IC neemt maar 20µA op.
Meer info over de QT110 zie het automatische handdoekrek project.
Het apparaat wordt door mij iedere avond één of tweemaal gebruikt (de volle 10 minuten), o.a. voor een kop groene thee voor het slapen gaan.
De batterijen gaan daarbij zo'n tweeënhalf maand mee, voor ze weer moeten worden opgeladen.
Als de batterijen bijna leeg zijn is de servomotor de eerste die ermee stopt, hij krijgt het theezakje niet meer goed omhoog.
De PIC en de QT110 zelf werken nog steeds goed als de spanning naar 2 volt is gezakt.
Alleen als het apparaat plat ligt kan de arm worden ingeklapt.
Het elastiekje kan niet echt zijn want dan kan de arm er niet langs.
Daarom is het in tweeën geknipt en zijn de uiteinden aan de behuizing vastgelijmd.
Door de vorm van de arm kan het theezakje goed boven een beker hangen.
De arm is gezaagd uit een ongeëtste printplaat met een zaagsnede voor het theezak touwtje.
Ingeklapt zit het in zijn geheel in de behuizing.
De arm wordt aangedreven door een goedkope kleine servomotor van Conrad.
8
8 Ga met de muis op de foto staan voor een extra foto. |
Omdat dit maar een tijdelijk project is (als gein) is er geen print voor ontworpen
maar is hier gebruik gemaakt van een breadboard zodat, als de lol er af is, deze weer eenvoudig gesloopt kan worden. De batterijen zijn onderin de behuizing geplaatst zodat het zwaartepunt onderin ligt. Normale batterijen zijn niet toegepast omdat je dan aan 3 × 1,5V = 4,5V of 4 × 1,5V = 6V spanning komt. De werking van het programma wordt voor een deel beschreven in PIC Basic cursus deel 8, het deel dat servomotoren behandeld. De gong en het alarmsignaal door de luidspreker is beschreven in PIC Basic cursus deel 7. De instructie SLEEP met daarbij de interrupt op PORTB.0 om de PIC weer uit zijn slaap te halen is (nog) niet behandeld in de cursus,
maar kan worden bekeken in het PIC Basic 'Theezetter' programma dat hieronder te downloaden is. |
Programma
Normaal is de PIC altijd in slaap, of de arm daarbij is in- of uitgeklapt maakt niet uit.
Telkens als op PORTB.0 een lage puls van aanraaksensor QT110 krijgt, komt het uit zijn slaap.
Het eerste wat de PIC dan gaat doen is kijken welke actie hij nu moet doen.
Dat kan hij zien aan twee dingen; de BIT variabele én de hellingschakelaar op PORTB.1.
Als PORTB.1 een LAAG niveau heeft, dan staat het apparaat rechtop.
Het programma onthoudt met de BIT variabele (met de naam 'ArmSituatie') of de arm binnen (= '0') of buiten (= '1') is.
BIT | PORTB.1 | Gebeurtenis na een puls van de QT110 aanraaksensor: |
0 | LAAG | Het apparaat staat rechtop, arm naar buiten brengen. |
0 | HOOG | Niets doen, liggend mag het apparaat de arm niet naar buiten brengen. |
1 | LAAG | Als nu binnen een seconde opnieuw een lage QT110 puls op PORTB.1 komt, dan togglen tussen 20× en 200× dippen. Als na een seconde geen QT110 puls (meer) wordt ontvangen, dan arm iets zakken, 10 seconden wachten, daarna dippen. Mocht het tijdens dippen opnieuw een puls van de QT110 krijgen, dan stoppen met dippen en theezakje uit thee halen. |
1 | HOOG | Het apparaat ligt plat, arm naar binnen brengen. |
Meteen na één van bovenste acties te hebben uitgevoerd, valt het apparaat weer in slaap,
wachtend op een volgend signaal van de aanraaksensor.
De PIC blijft de waarden van variabelen gewoon onthouden als hij in slaap is.
Het programma is zo opgezet dat na het inleggen van de batterijen de besturing meteen in slaap valt.
Schema
Als de PIC in slaap wordt gebracht schakelt deze eerst met de BC327 transistor de voeding van de servomotor geheel uit om de batterijen te sparen.
Anders zou de print (van de servo zelf) constant stroom blijven snoepen.
S1 is de hellingschakelaar die bepaalt of het apparaat rechtop staat of plat ligt.
Eventueel kan er een LED op PORTA.7 worden aangesloten voor 'power on' indicatie.
Vergeet de 10Ω weerstand niet in de voeding van de servomotor.
Het project kan ook met een 8-pins PIC worden uitgevoerd.
Voor PIC Basic programmeurs is het interessant om de Basic broncode te downloaden en te bekijken.
De voorloper van dit project (met toetsen) is ook nog te bekijken, let wel,
het programma, de besturing en de bediening daarvan is wezenlijk anders.
Misschien wordt het project nog eens vernieuwd.
Plannen zijn er om van een oude elektrische tandenborstel de batterijen via inductie (= contactloos) te laden.
Over PORTB.0 interrupt later meer.
Onderdelenlijst print 141201:
Als de theezetter geen tijdelijke maar een vast project wordt, dan kan gebruik worden gemaakt van de print in plaats van het breadboard.
Print 141201 | Zelf etsen of door iemand laten maken (40mm × 26mm) |
IC1 | PIC16F628A - Download het HEX bestand onderaan deze pagina |
IC2 | QT110 |
T1 | BC327 PNP transistor |
D1 | BAT85 Schottky diode |
R1 | 10Ω |
R2 | 1k |
C1 | 220µF (radiaal) |
C2 | 10µF (radiaal) |
C3 | 10n (radiaal) |
C4, C5 | 100n (SMD) |
S1 | Hellingschakelaar (kantelsensor) van Conrad, bestelnr. 70 04 44 |
Motor | Servomotor ES-035 van Conrad, bestelnr. 22 77 27 (niet meer leverbaar) |
Connector | Header 3 pins |
Speaker | Mini-luidspreker 8Ω |
IC-voet | 8-pins, eigen keus (niet per se nodig) |
IC-voet | 18-pins, eigen keus (niet per se nodig) |
Bimbox | Behuizing voor het project |
Batterijhouder | Voor 4 penlights + aansluitsteker met draad |
4 batterijen | Penlights, alleen oplaadbaar(!) type gebruiken |
Stuk ongeëtste printplaat dat dient als aanraaksensor en als arm |
Om de stroomopname zoveel mogelijk te beperken bevat de print geen spanningsregelaar.
Daarom alleen oplaadbare penlight batterijen gebruiken, (4 × 1,25V = 5V).
Normale batterijen hebben een hogere spanning, (4 × 1,5V = 6V), waardoor de schakeling stuk kan gaan.
Hoewel de 16F628A wat aan de grote kant is voor dit project (er blijven verscheidene pinnen ongebruikt), is deze gekozen wegens de grote bekendheid alsook voor de CCP/PWM module voor het gonggeluid.
De print wijkt iets af van het schema, in dit opzicht dat de gevoeligheid van de QT110 aanraaksensor nu niet vast ligt,
maar door het (PIC Basic) programma ingesteld kan worden met behulp van PORTB.5 en PORTB.6.
Door PORTB.6 LAAG en PORTB.5 HOOG te maken, staat de QT110 aanraaksensor op z'n gevoeligst ingesteld.
Ook is op de print de BAT85 diode (nog) niet geplaatst, deze is er namelijk later bijgekomen (zie schema).
De BAT85 voorkomt voedingsstoringen die door de servomotor werden veroorzaakt.
Dankzij de BAT85 kan de elco nu 220µF zijn (op de componenten opstelling staat nog 1000µF).
De print in de behuizing gebouwd. |
De hellingschakelaar zit rechtstreeks op de print gesoldeerd, de draden lang laten zodat deze schakelaar in positie kan worden gebogen. |
Dit project stamt uit april 2007 toen de QT110 nog redelijk goed leverbaar was.
Tegenwoordig is deze slecht verkrijgbaar (Farnell
heeft nog de QT110a variant).
Er zijn diverse PIC types die nu zelf een ingebouwde touch sensor aan boord hebben (zoek naar mTouch van Microchip op het internet) waardoor bovenstaande is te bouwen zonder apart QT110 IC.