Archiv der Kategorie: Schaltung

Y-Adapter für den Logikanalysator

For english version please click here.
In diesem Blogbeitrag wollen wir Euch eine ganz einfache, aber sehr effiziente Lösung für das Debuggen von Schaltungen vorstellen. Wie Ihr vielleicht schon wisst, sind wir nun in der Lage die Signale, welche wir vom Mikrocontroller aus senden, auch mit einem Logikanalysator taktgenau zu messen. Nun möchte man manchmal auch die Antwort des angesteuerten Chips messen können, was uns auch zu der hier vorgestellten Lösung gebracht hat.
Wir bauen uns einen DIP-Y-Adapter!

So ist man in der Lage auf Platinen befindliche Steckleisten zu kontaktieren und die Signale auf zwei Geräte, in dem Fall den Logikanalysator und den Zielchip zu verteilen.

Y-Adapter für den Logikanalysator weiterlesen

Unser erstes xMega-Testboard mit USB

Hallo liebe Bastelfreunde,

heute dürfen wir Euch wieder mit einem Update beglücken. Das Layout für das Testboard für den xMega mit USB-Anbindung ist fertig! Darauf kann der Chip im TQFP-Package mit 0.8mm pitch Platz finden, nicht zu verwechseln mit dem TQFN-Package von Atmel und einem pitch von 0.5mm. Die sonstige Beschaltung ist relativ einfach, die Platine bekam zur Spannungsregelung einen LM317 spendiert, vielleicht nicht die beste Wahl, aber ein Festspannungsrregler war gerade nicht zur Hand. Wichtig ist, dass man den Chip mit 3,3V betreibt und nicht mit den ursprünglichen 5V der USB-Schnittstelle. Die Datenleitungen der USB-Schnittstelle können auf 3,3V-TTL kommunizieren, daher stellt diese Art des Betriebs kein Problem dar. Leider ist der LM317 auch kein SMD-Modell, das Problem wird jedoch im nächsten Layout bestimmt besser gelöst werden. Lediglich die Schutzdioden wurden in dem Testboard nicht verbaut, dies sollte aber ebenfalls ein kleineres Problem darstellen.

Das Layout das ihr hier findet ist gespiegelt, um mit dem Tonertransferverfahren oder der Belichtungsmethode auf die Platine gebracht zu werden.

XmegaA3U_sch

 

Gruß

Thomas

 

 

USB-Anbindung zum XMEGA

Wir haben zwei neue xmega von Atmel geordert. Mit dabei ist dort ein Chip mit der Endung „U“, was auf einen nativen USB-Port hinweist. In der nächsten Woche werden wir mal ein Entwicklungsboard auf Basis dieses Mikrocontrollers aufbauen und dann mit der Anbindung dieses Chips an den Computer experimentieren. Weiterhin geplant ist die Kommunikation per Matlab, die später eine relativ einfache und flexible Möglichkeit bietet, Daten zu erfassen und zu verarbeiten.

Bis bald

AVR ISP mkII Kabelupgrade

Heute Nacht habe ich mal wieder eine für mich nützliche Erweiterung gebastelt, indem ich das ISP6-Kabel von unserem AVR ISP mkII Programmer mit einem Stecker erweitert habe, der von der Pinbelegung her exakt auf einen Atmega16 oder Atmega8535 passt. Das war unter anderem gerade deswegen notwendig, weil unsere RGB-LED-Matrix mal wieder umprogrammiert werden musste und unsere anderen Programmer aus dem Billigpreissegment ja einfach nicht mehr funktionieren wollten.

Hier seht ihr die fertige Friemelei:

AVR ISP mkII KabelupgradeAuf der kunstvollen Zeichnung im Hintergrund kann man die Verdrahtung erkennen und daneben ist nochmal die Pinbelegung eines Atmega16 aufgelistet zum Vergleich. Was hier auf den ersten Blick noch etwas verwirrend erscheint ist wohl der 10 kOhm Widerstand auf dem ISP6-Stecker. Dieser verbindet gerade Vcc und Reset, damit der Reset-Pin immer auf logisch 1 steht und unser Programmer nicht wie wild orange zu blinken beginnt. Normalerweise gehört dieser Widerstand direkt auf die Platine, auf der auch der AVR platziert ist, aber in unserem speziellen Fall war dieser Pull-Up dort noch nicht vorhanden und musste kurzerhand dazu gesteckt werden.

Wie ist denn nun der Innenwiderstand???

Wie ihr aus dem vorausgegangenen Artikel entnehmen könnt, hat der Innenwiderstand des Ausgangspin am ATXmega wohl nicht so ganz zu Theorie und Simulation gepasst. Falsch gedacht! Mittels einfacher Bestimmung durch die halbe Klemmenspannung ergibt sich ein Innenwiderstand von knapp 60 Ohm, genug also um die Schaltung zu treiben.
Daher hab ich die Schaltung kurzerhand mal mit dem Funktionsgenerator befeuert und mir das Signal am Oszilloskop angesehen. Wieso zeigt der Funktionsgenerator denn keine Amplitude? Er wird doch sicherlich nicht kaputt sein. Nein, wenn ich ihn abschließe, zeigt er das eingestellte Signal. Einzige Lösung: En Kurzer!
Da hatte sich ne Litze auf dem weg zum Lötpunkt verirrt und schloss das Signal mit Masse kurz. Gut dass es jetzt wie simuliert funktioniert und Atmel einen Überlastungsschutz eingebaut hat 😉

PWM-Booster

Da wir in unserem Quadcopter einen ATXmega verwenden, welcher mit 3,3V betrieben wird, während die Motorcontroller ein 5V-PWM Signal erwarten muss das Signal entsprechend verstärkt werden. Natürlich hätte es eine weniger reißerische Überschrift als ‚Booster‘ getan, gerade wenn es sich um eine Pegelwandlung handelt, aber das Thema gestaltet sich doch ein wenig größer als gedacht.

Zunächst noch einmal kurz zu den grundlegenden Parametern:
Wir wollen auf Grund der Größe und Komplexität auf einen TTL-Chip verzichten, von 3,3V auf 5V wandeln, die Frequenz ist dabei nicht größer als 16kHz, der Duty-Cycle bei 5-10%. Die Rise- und Fall-Zeiten des Signals am AVR waren nicht im Datenblatt von Atmel dokumentiert, weshalb dafür eine Messung an unserem Oszilloskop zu Rate gezogen wurde.

Ich habe zunächst mal eine einfache Transistorschaltung in LTspice eingeklickt, ein paar Parametter angepasst und simuliert. Natürlich muss da auch der Innenwiderstand der Quelle, also dem ATXmega und der Lastwiderstand des Motorcontrollers berücksichtigt werden, was sich gar nicht einfach gestaltete. Der Lastwiderstand wurde mit 20kOhm als ausreichend klein angenommen, sollte soweit passen, der Innenwiderstand des Output-Pin am ATX war in keinem Datenblatt von Atmel angegeben, sodass ich den Maximalstrom am Pin und die Versorgungsspannung des AVR dafür nutzte, den Widerstand zu berechnen. Dieser ergibt sich aus 8mA und 3,3V als 412Ohm und liefert in der Simulation ein wirklich verwertbares Ergebnis. Selbst der Strom durch Rb ist mit 3.5mA im absolut verträglichen Bereich.

In Realitas gibt es mal wieder Probleme und es dürfte daran liegen, dass der Innenwiderstand des Pin doch nicht den Wert besitzt, den man theoretisch errechnen kann. Die Schaltung tuts am AVR einfach nicht. Alle softwarespezifischen Probleme wie Pullup und sonstiges können ausgeschlossen werden, da wir alles durchprobiert haben, morgen geht es dann weiter mit einer Bestimmung des Innenwiderstandes per Ausgleichgerade. Mal sehen, was das so bringt…