Door een kennis die wat met AVRs is begonnen gevraagd om eens naar een stukje hardware te kijken wat hij geknutseld heeft en wat niet echt lekker werkt.

Schemaatje. Het geheel bevat meer, maar ik het het spul een eind gestript om het probleem te isoleren.

Het probleem: het is een stukje electronica voor in een auto. Niks fancy, wat knipper gedoe en iets wat piept. Spul draait op 12V van het 'boordnet'.
Probleem: soms doet-ie het wel 1 of 2 keer, daarna is de flash van de AVR leeg. Ding is overigens weer prima te programmeren. Op de werktafel is het probleem niet reproduceerbaar, ook niet als je het met een 'harde' voeding als een accu voedt. PCB ziet er op het oog goed uit (geen sluitingen ed.), layout is ook niet al te beroerd (heb 'm niet digitaal)

Oh ja, ik ben mij er van bewust dat een tiny22 reeds lang obsolete is. Echter, dat is hier niet het probleem. Oplossingen als 'pak een me-zus-en-me-zo IC kan ik ook bedenken, het gaat er meer omdat ik niet snap waar die AVR zo van in de stress gaat (mocht ik wat anders pakken weet ik dan dus ook niet waarom dat wel goed gaat... of ook niet). Gestabiliseerde voeding is overigens netjes 5V. Paar mV rimpel door het speakertje, mag mi. de pret niet drukken. Wel alles gemeten op een losse accu.

Wat heb ik al geprobeerd:

  • Andere AVR
  • 100Ω in de voeding
  • Transzorb over de speaker
  • Met labvoeding spanning langzaam omhoog / naar beneden (die tiny is wat picky mbt. 'netjes' opkomen van de voeding)
  • Stroom speakertje meten (daar loopt als je er kort 5VDC op zet zo'n 25mA)
  • Reset ding als een tl7757 oid. als supervisor voor de reset gebruikt

Ik ben een beetje door de 'trucendoos' heen. Iemand nog een zinnige suggestie?

Mis de 100nF c'tjes bij de regulator. Die transzorb zou ik over de voeding zetten om pieken uit de onsteking ed te killen.

Vrijloopdiodes over de torren. Een luidspreker is een inductieve last. Als je die "hard" schakelt, dan krijg je spanningspieken.

@Roland: volgens datasheet niet nodig. Voeding komt letterlijk uit de datasheet van die lm1117.
Ontsteking: joh, zover komen we niet eens. Aan zetten terwijl je geparkeerd staat is genoeg. (overigens buiten deze context wel een zinnige opmerking; heb er ook nog wel een paar over het geheel die ook nu even niet relevant zijn).

@FuzzBass: Eens. Maar een transzorb over dat spul (speaker + C) zou mi. er voor moeten zorgen dat daar geen ellende meer uit komt (voor de duidelijkheid: dit is experimenteel; je moet het niet 'voor echt' zo willen naar mijn idee).

Bedoel je met de flash leeg dat ie echt helemaal leeg is, of dat het programma niet meer werkt?

Als de hex die erin gaat anders is dan de hex die eruit komt dan zou ik eens de reset gaan loggen. Met twee torretjes wat weerstanden en een LED kan je iets maken waaarbij de LED uit is zolang de reset hoog is. Op die manier zie je snel genoeg of het ding niet ergens in reset gaat.

een transient (zoals idd van een speaker kan komen) kan idd (een deel van) je code wissen. Heb het op mijn werk ook al een paar keer gezien, geld voor ALLE AVR's

deze zou het wel opvallend veel doen, maar heb het vaker gezien...

die voeding moet voor automotive toepassingen om alleen die reden al 10.000 x strakker, want dit is anders 1 grote ellende bron! echter je heb nu alleen stil gestaan en dan merk je dat nog niet.

@kif: Nee, flash is leeg (als in: bevat alleen nog 0xff)
Ik mis nog even het nut van die reset 'loggen'. Ik kan mij voorstellen dat om welke vage reden dan ook het spul in reset gaat, maar daar mag het mi. niet 'leeg' van raken. Als ik je verkeerd begrepen heb: kun je die eens uitleggen.

@HmH: Daar was ik ook al bang voor. Vandaar ook even lomp-en-simpel een transzorb daarover (dat zou naar mijn idee een hoop op moeten lossen). Waarschijnlijk zijn ze te snel voor de scoop (hetgeen ook niet raar is...).
Mijn gevoel zegt ook dat de rommel daar vandaan moet komen... Wil graag wat meer dan een 'onderbuikgevoel' meegeven aan de bakker van dit spul.

Voor wat betreft die voeding: daar ga ik een eind in mee. Ken het wel van scheepjes (24V, maar zelfde problemen met rommel). Voor nu lijkt mij dat echter geen issue.

De elco misschien aan de andere kant van de speaker hangen. Zoals het nu is, hangt hij gemiddeld op gelijkspanning. Dat maakt voor de speaker niet uit, maar je verwacht het niet.
/e: Maar dat heeft niets met je vraag te maken, sri.

[Bericht gewijzigd door Frederick E. Terman op (13%)]

Op 23 januari 2009 14:54:13 schreef Marco69:
@kif: Nee, flash is leeg (als in: bevat alleen nog 0xff)
Ik mis nog even het nut van die reset 'loggen'. Ik kan mij voorstellen dat om welke vage reden dan ook het spul in reset gaat, maar daar mag het mi. niet 'leeg' van raken. Als ik je verkeerd begrepen heb: kun je die eens uitleggen.

Was maar een gooi in het diepe, maar ik kan me voorstellen dat er vreemde dingen als je de reset laag maakt en een berg stoorpulsen de programmeeringang in stuurt.

Probeer het eens zonder speaker om te kijken of hij daardoor wordt gewist.
En controleer je Brown-out Detector (BOD) fuse, ik zou hem in dit geval zo hoog mogelijk zetten (ik dacht 4.5V).

@FET: Kun je die uitleggen? De speaker staat nu alleen mee te stuiteren, voor DC op die speaker maakt het geen zak uit mi.

@KIF: Snap 'm. Heb de losse poten even hard aan ground gelegd (staan in software momenteel toch als output-low). Maakt geen zak uit. :(

@2N3055: Deze AVR is nog uit de tijd dat er geen BOD in zat. Oud beest... eind jaren 90 ofzo. Heb er even een mc34064 op geklust (4V6 volgens datasheet). Maakt geen zak uit.
Zonder speaker: ik verwacht de ellende wel in die hoek. Zoals reeds eerder geschreven, treedt het verschijnsel alleen op in een auto (vaaag) en op dit moment is de eh... luchtvochtigheid wat hoog hier zeg maar :).
Wordt vervolgd.

hij genereert toch troep als hij stuitert marco: vindt FET zijn opmerking ZEKER zin hebben..

even afkoppelen en denk dat het blijft werken

besef je wel: die AVR is ook al uit, je progt in flash, flash wordt niet beter van blijven herproggen: dit ding is nog oud: kan best zijn dat hij maar een keertje of 1000 geprogd kan worden..... RTFD eens en kijk eens hoe vaak dat ding al geprogd is.

Die transistor schakeling voor de luidspreker is wel een beetje ontzettend bot. Stel dat de HFE 100 is, dan kan daar zomaar 25ma (wat het pootje van de tiny kan) *100 = 2.5A dat luidsprekertje in. Als dat ding even niet doorheeft dat ie inductief is, gebeurt dat ook... De tor heeft ook nog effe nodig voordat ie door heeft dat ie dat niet leuk vind. Wat je voedings-spanning dan doet, weet ik niet. Ik zie wel een leuke condensator in de buurt van de voeding van de torren, maar is die snel genoeg?

En tegen de tijd dat die 2.5A loopt, is het ook snel weer over. Mogelijk is de inductie van draden zodanig dat er dan een VCC piek komt, die buiten specs is, dus waarop de attiny denkt: Doe het zelf....

Probeer eens met 100nF in serie met de luidspreker (mogelijk maakt het nog genoeg herrie. Als het ineens werkt, weet je waar je het kunt zoeken, ook al maakt het niet meer genoeg herrie) (als je de boel redesigned, zet hem aub aan de andere kant van de luidspreker), en probeer het eens met 100nF parallel met de 10uF. Verder kan je 1k in de basis leiding toevoegen. (Max stroom door LS was 25ma, 1ma stuurt je tor dan redelijk richting verzadiging... )

Hmm. verzadiging? Helemaal niet! Je hebt je torren dus zodanig dat ze maximaal snel in actie kunnen komen. Mogelijk heb je daar een prachtige HF zender gemaakt....

Probeer eens een 100nF (of mischien 10) op de basis leiding.

[Bericht gewijzigd door rew op (14%)]

1uF tussen Tiny en bases.

Ik zie niet echt in wat het verschil zou zijn als je die elko aan de andere kant van de speaker zou zetten. Voor gelijkspanning is de speaker toch een ohmse weerstand, en aangezien je niets doet met het knooppunt tussen de speaker en de elko maakt het volgens mij ook theoretisch niets uit.

Maar: blijft het ding het wel doen als je de speaker (als dan niet inclusief transistors) afkoppelt?

Op 24 januari 2009 01:38:25 schreef rew:
Die transistor schakeling voor de luidspreker is wel een beetje ontzettend bot. Stel dat de HFE 100 is, dan kan daar zomaar 25ma (wat het pootje van de tiny kan) *100 = 2.5A dat luidsprekertje in.

Als dat een 8Ω-speakertje is, zal de stroom wel wat minder zijn, denk ik. Tenslotte varieert de spanning aan de speaker maar tussen 0.6V en 4.4V

@Marco69: als het ding in je labo probleemloos blijft werken, kan je misschien eens nagaan wat het doet met een "slechte" voeding. Klein weerstandje ( 1Ω ) tussen labvoeding en schakeling, en parallel aan de schakeling een extra-verbruiker (of een eindversterker) die je met een functiegenerator aanstuurt.

Wederom bedankt voor de tips.
Een aantal van de kritiekpunten had ik zelf ook al verzonnen (zie startpost; het is niet mijn ontwerp); snap alleen nog niet helemaal waarom het 'dood' gaat.

@HmH: Dat er troep uit die speaker komt is denk ik niet de discussie. Ik snap niet wat het omdraaien van speaker en C daar aan zou veranderen (uitleg welkom!)
Voor wat betreft die flash: Zou best kunnen dat die het wel 1000x kan. Stel dat ik 'm nu wel 20 keer per dag 'stuk' krijg, dan zou ik op basis daarvan 50 dagen kunnen pielen. Ik ben echt niet van plan er zoveel tijd in te steken :) (maar je hebt een punt, die AVR zal er niet beter op worden op deze manier; boeit op dit moment even niet... wil gewoon snappen waarop het stuk gaat)

@rew: In de startpost staat reeds dat als je DC op het speakertje zet (ook bot, maar had dezelfde gedachte als jij) er 25mA loopt. Ohms doet het ding dus iets van 200Ω. Met die stroom loopt het dus op het eerste gezicht wel los. Ik had anders ook meer zooi op de voeding verwacht. Of die C bij de torren snel genoeg is? Ik zou er eens 100nF bij kunnen zetten, momenteel is het 10μF tantaal.

Lijkt inderdaad een goed plan om nog eens naar die bases sturing en die serie-C te kijken. Alhoewel ik niet zie wat een C in de bases aan spikes zou doen. Ook nog een beetje oppassen dat het ding geen lading pomp wordt en je de basis van één van de torren zo ver weg trekt dat de emitter het niet kan volgen. Wellicht klein serieweerstandje erbij dan.

@pros: Ik heb in serie met de labvoeding al vanalles geprobeerd aan in serie met en parallel aan enzo. Ben nu bezig met een 12V 17Ah accu. Met 1Ω in serie maakt dat (wederom) geen zak uit (blijft werken). Verbruikers erbij, (lampjes), eraf, het maakt geen zak uit. Heb zoals reeds eerder beschreven reeds 100Ω in serie gehad (je zou verwachten dat 'rommel' uit het boordnet (wat dat dan ook moge zijn bij stilstaande auto) dan wel in de weerstand, regelaar en C's blijft hangen). Op de werktafel blijft het werken, in het eggie is het na 1 of 2x dood. Om gek van te worden!

Ik heb de C bij de speaker er even uit getrokken en een paar keer auto op-en-neer gelopen. Lijkt 'heel' te blijven (niet heel erg onverwacht).

Om nog een keer te herhalen: ik wil gewoon graag weten waarom het 'stuk' gaat. Persoonlijk had ik de hele opzet anders gedaan, maar dat is een andere discussie. Het moet tenslotte een combi zijn van 'voeding uit een auto', de spanningsregelaar en dat stukje rond die speaker.

Nu eerst 'even' een verhuizinkje doen. Later meer.

Op 24 januari 2009 07:31:51 schreef Marco69:
... Het moet tenslotte een combi zijn van 'voeding uit een auto', de spanningsregelaar en dat stukje rond die speaker...

Doe je de "auto-test" slechts met één-en-dezelfde auto, of treedt het verschijnsel op bij verschillende auto's?

Waar vandaan uit de auto pak je de voeding?
En hoe schakel je in- en uit?

Misschien helpt dit verder:
http://www.efton.sk/misc/reset.pdf
Lees ook bij punt 1.8

Op 24 januari 2009 07:31:51 schreef Marco69:
@HmH: Dat er troep uit die speaker komt is denk ik niet de discussie. Ik snap niet wat het omdraaien van speaker en C daar aan zou veranderen (uitleg welkom!)

Theoretisch: Helemaal niks. Dus nu niks aan veranderen. Maar als je het overnieuw zou doen, is het gebruikelijker om ze om te draaien. Als het met de wiring weer vervelened uit komt doe je het toch weer zo. Case closed.

Pros, je hebt gelijk.

Marco, Er worden een aantal hints gedaan om te proberen een situatie te creren waarbij het niet fout gaat. Zodra je die hebt, kan je zeg maar een binary search gaan doen: als ik nu dit terug doe, gaat het dan nog steeds goed? Het punt wat dan essentieel blijkt voor het ineens goed gaan, is een sterke hint naar wat er origineel mis was.

Ik stel voor om een condensator tussen de basis en de GND te zetten. Niet tussen de MCU pin en de basis. De DC koppeling daar is prima. Ik wilde hem alleen wat langzamer maken.

[Bericht gewijzigd door rew op (34%)]

OK, weer even verder spelen:

@P.T.: Tot op heden maar 1 auto geprobeerd. Om het even eenvoedig te houden, is het nu gewoon een plug in de sigarettenaansteker (en dat zal best wel wat knetteren bij inprikken; echter, een schakelaar in de voeding om die knetter weg te werken maakt geen donder uit).
De reset van dit device is 'crappy' (vind ik zelf; later sterk verbeterd). Vandaar ook het testen met een externe BOD (maakt ook geen zak uit). Maar dan nog... Als die reset op z'n bek gaat, dan runt het spul wellicht niet. Maar om nou 'leeg' te zijn?

@rew: T2 verwijderd, 1kΩ in serie met basis T1 en 100nF over BE van T1, C3 kortgesloten, vrijloopdiode over SP1. Dat *lijkt* te werken. Ik ga morgen eens kijken of het heel blijft als ik het 10x ofzo probeer (brrrr nu)

Als dat heel blijft, wil ik ook nog eens kijken wat die push-pull op die manier aangestuurd doet.

Om op je foutzoeken terug te komen: het lijkt duidelijk te zijn dat die speaker de ellende veroorzaakt (niet onverwacht wederom). Op de voeding vind ik er niks van terug op de scoop (nou zegt dat niet alles, maar goed). Dan zou je aan iets wat door die tor heen gaat gaan denken.

Om op je foutzoeken terug te komen: het lijkt duidelijk te zijn dat die speaker de ellende veroorzaakt (niet onverwacht wederom)

Kom nou, dat is toch al te gek? Ik heb hier enkele AVR-printjes liggen, waar zo'n speakertje op dezelfde wijze gestuurd wordt. Nooit problemen mee gehad.

De eerste verdachte is en blijft de voeding. Een wagen met draaiende motor is nu eenmaal geen gezellige omgeving voor elektronica.
Dat hoeft uiteraard niet tot gevolg te hebben, dat de AVR doodleuk z'n flash wist. Ook storingen op de reset, gecombineerd met rotzooi op de programmeerpinnen kunnen IMHO niet tot gevolg hebben dat de AVR dit opvat als een "wis jezelve" opdracht. Alvorens een AVR ISP-opdrachten aanvaardt, moet de programmer eerst synchroniseren om er zeker van te zijn dat beide partijen mekaar begrijpen¹. Dat lukt nooit met wat random pulsen op de pinnen.

Volgens mij is die ATtiny22 gewoon ziek. De griep, een lintworm of erger.
Dat kan je nagaan, door hem door een ATtiny13 of een ATtiny45 te vervangen, en de schakeling uitgebreid te testen in dezelfde wagen. Mèt speaker.

¹) In de datasheet vind ik niets terug over het ISP-protocol, maar ik ga er van uit dat dit niet verschilt van modernere AVR's

@pros: de motor loopt nog niet eens... Dus grappen van dynamo, ontsteking of soortgelijke rommel heb ik helemaal niet. Verder is alles ook nog lekker conventioneel, dus ook geen CANbus oid. die lekker staat te storen.

SPI is inderdaad min of meer identiek aan andere AVRs - kan wel waarderen dat Atmel het allemaal compatible houdt.

Zoals reeds eerder beschreven heb ik al een paar van die AVRs geprobeerd. Dan zou het een seriematig of wellicht een bug in het type moeten zijn? Kan het niet uitsluiten, maar het zou mij wel verbazen.
Een andere AVR die wel 'heel' blijft... zou duiden op een betere damping / clamping / wat dan ook in de AVR. Welnu, dat zal best beter zijn. Feit blijft dan dat er nog steeds ergens rommel vandaan komt, maar dat je er geen last meer van hebt.
Verder is die speaker sturing inderdaad wat lomp, maar ja... jij doet het blijkbaar ook zo :).

Een auto-erase per commando sluit ik ook uit. Theoretisch zou het vast wel een keer kunnen gebeuren. Maar niet zo vaak...

de motor loopt nog niet eens...

Dus: dementie slaat toe als de schakeling door een loodaccu (in een auto, zonder draaiende motor) gevoed wordt, maar niet als hij labvoeding krijgt? En dat met verschillende ATtiny22-exemplaren?
Dan moeten het aardstralen oid. zijn... :-)

Veel meer kan ik in ieder geval niet bedenken. Alhoewel: temperatuur, misschien? Staat die wagen buiten?

Op 28 januari 2009 19:01:29 schreef Marco69:
@P.T.:
... gewoon een plug in de sigarettenaansteker (en dat zal best wel wat knetteren bij inprikken; ...

Het lijkt mij waarschijnlijker dat er NIETS gaat knetteren.
Dergelijke aansluitingen, zoals autoaansteker-chassisdelen, zijn er niet voor bedoeld slechts enkele mA's stroom te voeren. Een eventuele hoge overgangsweerstand in zo'n voedingsaansluiting wordt niet zomaar omlaag "geknetterd" en dan heb je daar geen harde voeding, maar een zachte voeding via een aan/uit-schakelaar die contact-dender zal hebben.

Hoe dan ook, je zou een experiment kunnen doen anders te voeden, bijvoorbeeld:
Motorklep open, zodat je bij de auto-accu kunt komen. De auto-kabels blijven vast aan de polen. Plaats/positioneer het knutselwerk nabij de auto-accu. Met korte voedingsdraden aansluiten op de polen, via een zekering die je direct bij een pool aanbrengt. Zorg dat alles goed contact maakt. Schakelaar aan zetten.
Enig resultaat?

Op 28 januari 2009 19:01:29 schreef Marco69:
@P.T.:
Maar om nou 'leeg' te zijn?

Leeg = erased.
"These problems get even more aggravated when the microcontroller's code memory is FLASH-based, as the FLASH might get easily corrupted (unintendedly rewritten or erased) when run under rapidly varying or low supply conditions."

Op 28 januari 2009 22:12:02 schreef pros:
[...]
Dus: dementie slaat toe als de schakeling door een loodaccu (in een auto, zonder draaiende motor) gevoed wordt, maar niet als hij labvoeding krijgt? En dat met verschillende ATtiny22-exemplaren?
Dan moeten het aardstralen oid. zijn... :-)

Zover was ik ook... Leek me een goed idee om dan maar eens hier te komen vragen

Veel meer kan ik in ieder geval niet bedenken. Alhoewel: temperatuur, misschien? Staat die wagen buiten?

Ja. Maar zou het spul van werktafel naar auto 30m verderop zo snel afkoelen dat het veel uit maakt?

@P.T.: Dat zou nog eens een poging waard zijn. Echter, ik denk dat met een paar mA het spul wel of geen contact maakt. 'Knetteren' sloeg meer om het even stuiteren van de voeding bij inschakelen. Ik ga het toch even proberen.

Ik heb het zoals reeds beschreven ook met een weerstand in de voeding geprobeerd te emuleren op een labvoeding. Maakt geen donder uit. Ook de spanning labvoeding langzaam of snel (voor zover je dat haalt met een potmeter) omhoog / naar beneden draaien heeft geen invloed. Die 'low power' is dan zeker een paar keer voorbij gekomen.
Verder heb ik wat met de voedingsaansluiting op labvoeding gespeeld: zowel stekkertje snel vast/los/vast als de voeding kortsluiten. Tevens met 10Ω in de voedingslijn en de stroombeperking op 50mA er een paar keer een ontladen dikke C (nog voor de diode) over gezet. De AVR reset wel (niet zo raar, de erop geknutselde BOD triggert ongetwijfeld), maar geeft verder geen krimp.

Vanmiddag even verder spelen... In elk geval wederom bedankt voor het meedenken.