ATtiny85 Bierdeckel Programmer

M

Mitglied 9649

Guest
Hallo Experten,
ich bin neu hier und hoffe das ich den richtigen Bereich gewählt habe.
Als Anfänger möchte ich den "Bierdeckel-Programmer" (http://www.mikrocontroller.net/articles/Bierdeckel-Programmer)
nachbauen und habe den Schaltplan und das Layout in Eagle erstellt.

Schaut Euch doch bitte mal den Anhang an.

Habe ich das so richtig gemacht? Ist der Kondensator an der richtigen Stelle?
Oder ist das alles Müll?

Ich möchte mich schon mal recht herzlich bedanken.

Gruß Dieter

Dazu folgende Bilder (ich hoffe das es klappt):

Bierdeckel_verdrahtung.png

Mein Schaltplan:

Bierdeckel_v2Poly_sch.png

Mein Layout:

Bierdeckel_v2Poly_brd_1.png

und die Leiterplatte:

Bierdeckel_v2Poly_brd_2.png

Nochmals Danke.
 
So auf die Schnelle ist kein Fehler festzustellen. Womit programmierst du den Tiny?
 
Hi, und willkommen im Forum!

Dein Programmer würde so die Ziel-Schaltung (immer) mit Spannung versorgen, und zwar direkt mit VUSB. Eigentlich ist der VTG-Anschluß am ISP-Header dazu da, daß der Programmer die Versorgungsspannung der Ziel-Schaltung (eben die Target Voltage) ermitteln kann, und die Pegel für MISO/MOSI usw korrekt festlegt/auswertet.
Wenn Du also ein Target mit eigener Stromversorgung programmierst, schaltest Du so beide Versorgungen zusammen.
Andererseits ist auch der max zulässige Strom von VUSB zu beauchten.
Fazit: Ich würde zumindest einen Jumper vorsehen, um VUSB vom ISP abtrennen zu können. Der Programmer selbst ist ja selbst auf lediglich 5V-Logik ausgelegt.

Ich schließe mich meinem Vorposter an:
Wie bekommst Du die Firmware (und eventuelle Updates) in den Tiny? (Ich hab bei meinem (erster Beitrag, letztes Bild) 'n STK500 verwendet)
Arbeiten die derzeit noch ernsthaft an Updates? TPI?
 
Hallo und danke für's ansehen.

@Hubert.G: Meine Experimente mache ich mit "Arduino" und "mySmartUSB light".
Dazu noch ein Steckbrett und myAVR_ProgTool.

@LotadaC: Ich stecke wirklich noch in den Kinderschuhen und habe auch beruflich nichts mit dieser Materie zu tun.
Wenn ich Dich richtig verstanden habe, dann sollte der Jumper VCC vom USB unterbrechen. Oder?
Der mySmartUSB kann wahlweise mit einer AVR910/AVR911 oder STK500 kompatiblen Firmware genutzt werden.
Wie es mit Updates aussieht kann ich nicht sagen.

Mit der Schaltung vom "Bierdeckel-Programmer" wollte ich lediglich mal ein Projekt vom Layout bis zur ätzbaren Leiterplatte versuchen und auch löten. Es hätte aber auch jede andere kleine Schaltung sein können.
Hauptsache mit Eagle und KiCad klar kommen und ein Erfolgserlebnis haben.

Gruß Dieter
 
Nicht ganz. Den Programmer kannst Du schon vom USB versorgen lassen. Aber ich würde 'ne Möglichkeit miteinbauen, VTG vom ISP zumindest abtrennen zu können. Dann muß die Target-Schaltung natürlich 'ne eigene Versorgung haben.

PS.: Ich habe beruflich auch gar nichts damit zu tun, und lernen tun hier fast alle noch... irgendwo.

PPS: Das STK ist doch konform mit den beiden AppNotes, oder?
AVR911 betrifft dabei die PC-seitigen Anforderungen, AVR910 die Programmier-Hardware (also den IS-Programmer). Beide müssen natürlich aufeinander abgestimmt sein.
Die "E"-Version vom AVR910 ist übrigens vom August 08, und basiert auf der seriellen Schnittstelle (RS232).

PPPS: Dein Routing könnte man übrigens auch noch etwas vereinfachen... Du machst Dir das zwischen den Beinchen unnötig schwer. es geht auch ohne (die 4 Widerstände von oben nach unten: !Reset, SCK, MISO, leer, MOSI - die Leiterbahnen dann um den Wannenstecker rum (erst MISO, dann SCK, dann !RST routen) - Gnd alle Leiterbahnen vorher raus, und direkt durch das Polygon fluten lassen. Der Tiny bekommt sein Gnd dann durch das Polygun unter den 3 Widerständen. In die Lücke zwischen den Widerständen (oder darunter) dann der Jumper, mit dem man VTG mit VUSB verbinden kann.
Eleganter und kleiner bekommst Du das übrigens, wenn Du den ISP-Header um 180° drehst, und den Tiny um 90° nach links. Die Widerstände dann stehend dazwischen. Auf der USB-Seite Rs und Ds ebenso. Über dem Tiny dann den Kerko. Vielleicht direkt an Gnd noch einen 2ten, wenns paßt...
 
@LotadaC:
Oh, danke. Deine Vorschläge zum Layout werde ich doch gleich mal probieren.
Was das STK angeht, da habe ich mir noch keine Gedanken darüber gemacht. Ich bin auch nicht auf USB angewiesen. Meine Rechner haben noch alle Schnittstellen.

Gruß Dieter
 
Hallo LotadaC,
Layout ist kleiner geworden 48,1 x 25,7 mm statt 63,4 x 27 mm. Hätte ich auch selber sehen müssen. Den Jumper habe ich nun so eingebaut. Jetzt wird die Platiene nur vom USB versorgt. Habe ich Deine Anregung jetzt richtig verstanden?

Hier mal die geänderte Version:

Bierdeckel_v4Poly_sch.png
Bierdeckel_v4Poly_brd1.png
Bierdeckel_v4Poly_brd2.png

Gruß Dieter
 
Im Prinzip schon, aber der 2te Kerko muß Gnd und Vusb verbinden-nur eben möglichst dicht am Gnd-Bein des AVR. Kannst den aber auch weglassen. Ich würde jetzt noch einen Kerko zwischen Vcc und Gnd nahe dem Wannenstecker setzen, und einen Pullup am Reset (auch dicht anSV1) - dann kannst Du auch nackte Controller Programmieren).
Falls Du den Tiny Sockeln willst, prüfe vorher auf'nem Ausdruck, ob das paßt...
 
Der Sinn von C2 erschließt sich mir jetzt nicht.
Laut meinen (beschränkten) Kenntnissen kann das so doch garnicht funktionieren :confused:
 
Da hab ich mich missverständlich ausgedrückt. Der soll elektrisch parallel zu C1, aber eben dicht an das Gnd-Bein des Tiny. Und C3 wäre bei geschlossenem Jumper dann auch parallel dazu, nur eben dicht am ISP-Header. Dann könnte auch noch ein kleiner Elko (oder Tantal) die Spannung stützen. 47uF vielleicht ("...das sagt Bauch...") - also auf der USB-Seite vom Jumper.
 
Hallo,
ja der C2 war eine Lachnummer. Das war wirklich der Brüller.

@LotadaC: Habe ein 47µF 16V Elko gleich noch mit eingebaut. Einen habe ich noch gefunden.
Was sagt denn "der Bauch" zu 100µF 16V? Von den habe ich auch noch welche.

Das sind die Bilder:
Bierdeckel_v6Poly_sch.png
Bierdeckel_v6Poly_brd1.png
Bierdeckel_v6Poly_brd2.png

Achso, Leiterbahnen sind auf 0,3048 eingestellt und Isolate auf 0,254. Geht das so? "drill-aid.up" habe ich nicht aufgerufen. Dann brauche ich die Zentrierungen bei der nächsten Berichtigung nicht löschen.

Gruß Dieter
 
Mehr schadet Deiner Schaltung natürlich nicht, allerdings ist der Rums beim Einschalten für den USB heftiger. 10uF wären auch OK.
Zu den Leiter- und Isolationsbreiten: wenn Du Dir das zutraust... insbesondere um die Lötaugen...
Du hast übrigens den Rand vom Gnd-Polygon abgetrennt, oder?
Ich würde folgendes andern:
C3 kommt unter SV1
R8 kommt dahin, wo C3 war (R8 soll nämlich auf die andere Seite vom Jumper und hinter R2). Außerdem würde ich 10K nehmen.
R4 dahin, wo jetzt C2 ist (Leiter zwischen Pin 3,4 des Tiny), C2 irgendwo unter den Tiny.
 
Hi,

allerdings ist der Rums beim Einschalten für den USB heftiger.

also über 470µF würde ich nicht gehen. Ich hab hier irgendwo ne selbstgebaute Schaltung die ich über USB versorgt habe. Da hat der PC jedesmal beim Anstecken ne Sprechblase losgelassen :rolleyes: :flute:

Gruß
Dino
 
Für Drillaid hab ich mir mal sowas wie'n Script geschrieben (also 2), und die in das Menü miteingebunden - jetzt kann ich mit 2 Klicks drillaid mit 0.3mm Löchern starten lassen, oder alle entfernen (inklusive Layer löschen lassen). Soll ich dazu nochmal näheres raussuchen?

Eventuell bringts Dir noch was, wenn Du alle Lötaugen rund machst - das kann man irgendwo bei den Design-Rules einstellen (einfach "DRC" eingeben, und da dann beim Reiter "Shapes" oder so...)

Anmerkung noch: nach dem Programmieren der Firmware wird die RSTDISBL-Fuse (oder wie die heißt) programmiert - der Tiny kann also nicht mehr "resetted" werden, und folglich auch nicht mehr via SPI programmiert werden. Klar, Du brauchst alle (2x Stromversorgung, 2x USB, 4x Target-Programmierung) Beinchen. Somit ist der Programmer also selbst eh nicht IS-programmable.
 
Hallo,
erstmal danke für Eure Hinweise.
Der "Lach-C2" ärgert mich noch und so einen Blödsinn auch noch zu zeigen. Weis der Geier was mich da geritten hat.

@LotadaC
Ich werde das Ganze doch etwas größer und breiter gestalten. Der Ausdruck hat mir gezeigt wie klein die Platiene wird und wie dicht die Bauteile sind. Mit den Rand vom Gnd-Polygon habe ich nichts weiter gemacht. Jedenfalls nicht beabsichtigt.
Für den Elko werde ich dann doch lieber den kleineren 10µF nehmen und Deine anderen Vorschläge in Eagle gleich umsetzen. Dann werde ich die Schaltung mal auf dem Steckbrett zusammen bauen.

Dein Drillaid Script würde mich schon interessieren. Wäre nett, wenn Du das raussuchst und zum Download anbietest. Mit den Einstellungen in den Design-Rules habe ich noch nicht weiter experimentiert, aber gleich in "Shapes" runde Lötaugen eingestellt. Am liebsten hätte ich auch größere Lötaugen, so wie auf der Lochrasterplatiene. Mal sehen, ob man das auch einstellen kann.

Deinen letzten Absatz zum "Programmieren der Firmware wird die RSTDISBL-Fuse..." muß ich mir noch paar mal durchlesen.

@dino03
Zu so einen großen Sprung kam mir nicht der Gedanke. Deine selbstgebaute Schaltung über USB versorgt würde ich mir auch gerne mal ansehen. Mal sehen, ob ich sie finde.

Sorry, daß ich keine Zitate benutzt habe. Muß das erstmal probieren.

Nochmals Danke für Eure Hilfe.

Gruß Dieter
 
Hi Dieter,

Deinen letzten Absatz zum "Programmieren der Firmware wird die RSTDISBL-Fuse..." muß ich mir noch paar mal durchlesen.
ganz einfache Sache ...

Bei manchen Atmels ist auf dem Pin für Reset auch noch nen normaler IO-Pin drauf. Den muß man aber erst über die Fuse RSTDISBL (Reset Disable) aktivieren. Also quasi die Reset-Funktion auf dem Pin deaktivieren damit die normale IO-Funktion frei wird. Da man aber die Reset-Funktion für die Programmierung des Atmels benötigt ist das eine Einbahnstraße.

Also Code ins Flash, Fuses programmieren und danach kannst du ihn nur noch benutzen. Es gibt keinen (bis auf HV-Programming) Weg mehr zurück.

@dino03
Zu so einen großen Sprung kam mir nicht der Gedanke. Deine selbstgebaute Schaltung über USB versorgt würde ich mir auch gerne mal ansehen. Mal sehen, ob ich sie finde.
War glaube ich das Mega128-Testsystem von mir. Am Anfang hab ich das und den Parallelport-Progger mit USB versorgt. Waren etwas viele Elkos dafür drauf. Der Ladestrom hat dann immer die Überstromerkennung vom USB ansprechen lassen.

Sorry, daß ich keine Zitate benutzt habe. Muß das erstmal probieren.
Dafür gibts im OffTopic-Bereich nen Testthread (ist mittlerweile ein paar Seiten weiter hinten).

Gruß
Dino
 
Das wesentliche zu der Fuse hat Dino ja schon geschrieben, ich sortiere mal meinen Gedankengang:
-ich hatte erst nach einer Weile festgestellt, daß der Tiny in Deiner Schaltung den besagten Reset-Pin verwendet, um das Target (zum Programmieren) in den Reset zu zwingen. Für den Tiny85 ist das also ein I/O-Pin (und kein Reset-Pin mehr)
-somit kann der einmal so verwendete Tiny also nicht mehr in den Reset geschickt werden, und folglich auch nicht mehr via SPI programmiert werden (bis man die Fuse eben wieder rausnimmt (aber eben nicht via SPI)) - bleibt die HV-Programmierung - aber eben nicht "In System"
-dazu muß also nach dem programmieren der Firmware in den Tiny85 die entsprechende Fuse gesetzt werden.
-das ist aber (zumindest beim AVRStudio) automatisierbar (also wo dann das Programm gebrannt wird, und hinterher automatisch alle Fuses)
-wenn der Tiny seinen Reset-Pin gar nicht für seinen Reset benötigt, braucht er dort logischerweise gar keinen Pullup (weswegen auch keiner in der Schaltung war) - der von mir vorgeschlagene Pullup ist aber auch nicht für den Programmer, sondern für das Target mit drauf. Zusammen mit dem Kerko am Header hast Du dann nämlich bereits die Minimalbeschaltung fürs Target, kannst also einen Target-Kontroller direkt an die 6 Signale klemmen.

Soweit verständlicher?

Zu den Lötaugen: Kannst ja selbst mal die Design Rules durchforsten. Möglicherweise läßt sich da was mit minimalen Radien oder so finden. Alle Bauteile neuerstellen wäre zuviel.

Eagle-Scripte: Ich werde nachher mal den Rechner hochfahren, und das raussuchen. letztendlich war das immer nur'n Zweizeiler oder so ("Run drill-aid 0.3" oder so), ich hatte das dann in 'ne Text-Datei kopiert (und die umbenannt), um das in 'n Menu einzubauen (damit man dann eben nur noch'n Button drücken muß. Der startet dann die Script Datei. ich schau nachher mal, wenn die Kinder im Bett sind und so...;)
 
Zu den Lötaugen: Kannst ja selbst mal die Design Rules durchforsten. Möglicherweise läßt sich da was mit minimalen Radien oder so finden. Alle Bauteile neuerstellen wäre zuviel.

Das würde mich auch mal brennend interessieren. Bei einigen IC's sind die länglich, bei Anderen rund, ... Normalerweise kein Problem für mich, aber optisch etwas unschön.
 
zu drill-aid:

um das Menu einzubinden, muß man einmal in der Kommandozeile das ganze eigeben:
Code:
menu '---' 'drillAid {doIt : run drill-aid.ulp .3; | kill : script undo-drillaid.scr;} ' '---' ;
'---' erzeugt dabei Trennstriche (falls mann will, ansonsten halt der Text der Schaltfläche (drillAid), darin 2 weitere Unterpunkte, der erste ruft die originale drillaid-ULP auf, (hier mit 0,3mm Restloch), der andere mein Script, welches alle erzeugten Kreise und den Layer löscht. Es können natürlich auch andere Befehle/Scripte mit ins Menu (ich hab zB noch mit der Layerauswahl experimentiert, und ein Standard-Grid usw...)

in meinem Script (undo-drillaid.scr) steht dann:
Code:
layer 116 centerDrill;
display none 116;
group all;
DELETE (> 1 1 );
display last;
layer -116;
auf den centerdrill-Layer schalten, nur diesen Layer aktivieren (alle anderen deaktivieren), alle Elemente (der aktiven Layer) auswählen, ausgewählte Elemente Löschen (entspricht delete group bei Koordinaten 1;1), die Layerauswahl rückgängig machen, Layer 116 löschen.

Die Dateien (.ulp und .scr) muß Eagle natürlich finden können, also entweder im Standard-Ordner für Scripte und ULPs, oder die entsprechenden Pfade bekanntmachen.

Zu den Lötaugen: Die heißen bei Eagle "Pad"s, daß alle zB rund sein sollen, kann man im Reiter "Shapes" im DRC einstellen.
Die ganzen Größen kann man im Reiter "Restring" manipulieren, denn genau darum gehts ja hier... um den Rest-Ring...
Getrennt für Pads (Lötaugen), Vias (Durchkontaktierungen) und Mikrovias...
Der Durchmesser wird aus dem Bohrdurchmesser abgeleitet (üblicherweise ein viertel), abweichend davon bei sehr großen/kleinen Löchern kann nach unten/oben begrenzt werden. Steht dort aber alles auch nochmal drunter erklärt
 
Hallo,
ich habe mit großem Interesse Eure Beiträge gelesen und weiter unten habe ich neue Bilder eingefügt.

ganz einfache Sache ...
Sicher, wenn man das erst einmal verstanden hat.

Dafür gibts im OffTopic-Bereich nen Testthread (ist mittlerweile ein paar Seiten weiter hinten).
Das waren wohl 6 oder 7 Seiten, aber den Testthread habe ich leider nicht gefunden.

Soweit verständlicher?
Erstmal verstehen. Werde mir die Fuse-Bits noch vornehmen.

Ich würde folgendes andern:
C3 kommt unter SV1
R8 kommt dahin, wo C3 war (R8 soll nämlich auf die andere Seite vom Jumper und hinter R2). Außerdem würde ich 10K nehmen.
R4 dahin, wo jetzt C2 ist (Leiter zwischen Pin 3,4 des Tiny), C2 irgendwo unter den Tiny.

Habe ich so geändert. Der R8 ist jetzt auf der ISP-Seite vom Jumper.

Der Pullup kommt doch normalerweise direkt zwischen VCC und dem Reset vom Controller. Also bei mir zwischen Visp (Pin 2) und dem Resetpin vom ATtiny (Pin 1). Aber warum soll der R8 dahin, wo der C3 war, über SV1?

Mit den Design Rules hatte ich schon herum gespielt. Das geht auch ganz gut, aber nur solange zwei Pins eines Bauteils nicht zu dicht sind. Dann hat man schnell "Clearance-Probleme". Mir ist es auch passiert, dass ich eine GND-Fläche von der restlichen GND-Fläche abgeschnitten habe, weil z.B. durch die Leiterbahn unter einen stehenden Widerstand plus Isolate und die vergrößerten Pads, dessen Isolate ja auch größer wird, keine leitende Kupferfläche mehr übrig blieb. Man könnte jetzt alle Widerstände und Dioden liegend verbauen, aber es müßten trotzdem auch der USB-Anschluß und der ISP-Wannenstecker ersetzt werden.

Ich habe zwei Widerstände in "liegend" geändert. Isolate hat 0,3048 und die Leiterbahnen 0,4064. Die Pads sind alle rund und haben 15 mil. Die Bohrzentrierung habe ich auf 0,5 gestellt. Kann man besser sehen und das sollte ich auch eigentlich löten können.

Dein Script "undo-drillaid.scr" funktioniert gut. Einfache Sache. Danke.

So, jetzt aber die neuen Bilder und ich hoffe das es die letzten sind.
Achso, die beiden Kerkos C1 und C2 habe ich direkt am Sockel und die passen da auch hin. Habe ich ausprobiert. Auch der C3 am ISP.

Bierdeckel_v7bPoly_sch.png
Bierdeckel_v7bPoly_brd1.png
Bierdeckel_v7bPoly_brd2.png

Die PDF-Datei mit Vorlage

Anhang anzeigen Bierdeckel_v7bPoly.pdf

Gruß Dieter
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)