ich hab nochmal ein paar Messungen durchgeführt und mir ist aufgefallen wenn ich mittels des Poti R24 auf den Lochrasterfeld die Spannung an MP2 zwischen 0 und ca. 0,7V ändere, ändert sich ab ca. 0,1V die Ausgangsspannung von MP8 von 4,29V auf sprunghaft ca. 10V.
vielleicht jemand ne Idee?
Grüße
Hallo, man musste ja bei der Vorbereitung Messungen an den Sense Widerständen durchführen. Wenn ich mich recht entsinne, lagen die Messwerte da bei ca. 100mV: Wenn du nun das Datenblatt des L297 genauer betrastest (Blockschaltbild im Datenblatt) siehst du, dass die Sense-Spannung mit der Vref (R24) an einem OP liegen (Vref an +). Somit schalten die OPs bei ca 0,1V auf positiv. Daraus folgt, dass der Rücksetzeingang High Pegel führt (Low-active). Somit wird beim nächsten OSC Impuls(1996 Hz), die Output-Logic angesprochen und somit auch den L298, welcher direkt an die Output-Logic gekoppelt ist. Daher springt dann auch der Ausgang (MP8) auf 11,3V-Ucesat(H+L) . Also so würde es für mich Sinn ergeben.
Zitat von Dounia Guten Morgen, hat sich jemand vielleicht mit dem Programm beschäftigt. Da gibts keine Kommentare, damit man den Programm nachvollziehen kann. Im Programm steht int AdrAdcValue = 44; , was bedeutet das. Danke
Hello,
das ganze ist das 7-Bit Adress Byte. Die 44 Dezimal entspricht in Binär 010 1100. Schau dir unten das Bild an, dann sollte sich die Frage klären ( Auszug Datenblatt MAX517).
Gruß
Hi
ich hab mir grade das Datenblatt nochmal angeschaut, wie kommt man da auf 44? Theoretisch müsste das doch so sein:
Wieso besteht das Adress Byte nur aus den ersten 7 Bit und das LSB wird komplett weggelassen (sonst wären es ja 88(dez)).
Das Adress-Byte ist ja auch immer 8 Bit lang. Die Slave-Adresse ist bei diesem Baustein 7 Bit lang; es gibt neben der 7-Bit-Adressierung noch eine erweiterte 10-Bit-Adressierung, die aber selten verwendet wird. Und warum ist eine 7-Bit-Adresse nur 7 Bit lang? Richtig, sonst wäre es ja keine 7-Bit-Adresse. [cool] Da aber bei I²C immer 8-Bit Daten-Blöcke übertragen werden, hat man dem Adress-Byte noch ein Bit spendiert, das eine wichtige Funktion enthält. Nennt sich R/W-Bit und gibt die Kommunikationsrichtung an: 1 für read und 0 für write.
Steht doch aber im Datenblatt. Durftet ihr das nicht lesen? "The eighth bit (LSB) in the slave address byte should be low when writing to the MAX517/MAX518/MAX519."
Ansonsten empfehle ich immer das Studium der Quellen von NXP, da findet sich im I²C-bus specification and user manual unter "3.1.10 The slave address and R/W bit" die Beschreibung der Adressierung.
Vielleicht behandelt ihr das noch später in der Schule ...
Gast
[align=center]"Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger." Kurt Tucholsky[/align]
Steht doch aber im Datenblatt. Durftet ihr das nicht lesen? "The eighth bit (LSB) in the slave address byte should be low when writing to the MAX517/MAX518/MAX519."
Gast
Das verstehe ich ja alles, wieso wird dann aber im Programm 44 und nicht 88 an den MAX517 übertragen als Adresse? Bei 44 würde ja dann das R/W fehlen, das heißt nicht das Adress-Byte sondern die 7-Bit-Slave Adresse übertragen werden...
Steht doch aber im Datenblatt. Durftet ihr das nicht lesen? "The eighth bit (LSB) in the slave address byte should be low when writing to the MAX517/MAX518/MAX519."
Gast
Das verstehe ich ja alles, wieso wird dann aber im Programm 44 und nicht 88 an den MAX517 übertragen als Adresse? Bei 44 würde ja dann das R/W fehlen, das heißt nicht das Adress-Byte sondern die 7-Bit-Slave Adresse übertragen werden...
Gruß Nico
Das liegt an der library Wire.h, welche nur 7 Bit verwendet. Das Richtungs-Bit wird dann bei der Übertragung korrekt ergänzt.
There are both 7- and 8-bit versions of I2C addresses. 7 bits identify the device, and the eighth bit determines if it's being written to or read from. The Wire library uses 7 bit addresses throughout. If you have a datasheet or sample code that uses 8 bit address, you'll want to drop the low bit (i.e. shift the value one bit to the right), yielding an address between 0 and 127. However the addresses from 0 to 7 are not used because are reserved so the first address that can be used is 8."
[align=center]"Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger." Kurt Tucholsky[/align]
There are both 7- and 8-bit versions of I2C addresses. 7 bits identify the device, and the eighth bit determines if it's being written to or read from. The Wire library uses 7 bit addresses throughout. If you have a datasheet or sample code that uses 8 bit address, you'll want to drop the low bit (i.e. shift the value one bit to the right), yielding an address between 0 and 127. However the addresses from 0 to 7 are not used because are reserved so the first address that can be used is 8."
habe nun folgendes Problem: Um die Modis half step wave drive und normal drive zu wechseln muss man ja den Spannungswert an dem Punkt K der auf AD0 läuft ändern. Wenn ich Xj1 gesteckt hab gibt ja das Arduino den jeweils eingestellten wert aus für die Modi (je nach eingestellten Spannungswert).
Normal ist ja der punkt K auf Masse und Xj1 nicht gesteckt weshalb an Pin19 von L297 5V anliegen für den Half step.
Ich habe nun mit externer Spannung die verschiedenen Spannungswerte für den jeweiligen Modi angeschlossen. Wenn Xj1 nun gesteckt ist kann ich das ändern da ich ja eine Verbindung vom Arduino den Pin iO2 hab zum Pin 19 vom L297. Wenn ich nun Xj1 wieder entfernt hab ich keine Verbindung mehr von IO2. Ich kann aber Trotzdem noch die verschiedenen Werte an K einstellen und die Modi werden gewechselt. Trotz der fehlenden Verbindung von IO2 zu Pin 19?? wie funktioniert das oder läuft das ganze über einen anderen Pin vom Arduino zum L297??
ZitatIch kann aber Trotzdem noch die verschiedenen Werte an K einstellen und die Modi werden gewechselt.
Hey,
meinst du mit die Modis werden gewechselt, die Anzeige auf dem LC-Display oder tatsächlich am Ausgang der Motor-Simulation (Oszi Aufnahme)?
Falls du die Anzeige meinst, diese arbeitet unabhängig vom L297 (sprich auch wenn keine Verbindung zu PIN19 vorhanden ist), da du die Werte an K/AD0 simulierst denkt das Programm , dass der Motor sich in dem Modi befindet und gibt die Ausgabe aufs LC-Display (für die Ausgabe müssen nur die Bedingungen eines Half/Full/Wave Modis sein, was der Motor letzendlich macht ist dem LC-Display egal). Miss am besten mal die Ausgänge mit einem Oszi zu der Anzeige dabei kannst du sehen ob der Motor den Modi wechselt oder nur die Anzeige.
So würde ich es mir zumindest herleiten, wenn ich deine Frage richtig verstanden habe.
Der Mode (halb,normal,wave) ist nur von K abhängig. Je nach Spannungswert an K wird der entsprechende Mode geschaltet. Der Arduino liest diesen Spannungswert und gibt abhängig davon die Signale an L297 und die Daten für die Displayanzeige weiter. Kann man eigentlich aus dem Arduino-Programm gut rauslesen
Wie und was man den kann - keine Ahnung. Wenn es darum geht einen Spannungabfall an einem Widerstand zu bestimmen, sollte man es vielleicht mal mit einem Multimeter versuchen. Anschließend den Spannungsabfall aber bitte fachgerecht im Sondermüll entsorgen!
Ich beschäftige mich gerade mit der Funktion der Schaltung und bin beim L298!auf paar fragen gestoßen. 1. einmal warum benötige ich die widerstände r28 und r29? Einmal für die Strommessern Gerd ist mir klar aber auf ner imternet Seite stand das sie immer be schrittmotoren benötigt werden. Und was genau macht der L298 nur das Signal aufbereiten und den Strom nochmal verstärken oder mehr? Hab mir jetzt gedacht durch die innenverschsltung das es einfach ein Signal Verstärker ist oder denke ich falsch
R28 & R29 brauchst du da man Motoren meist über ihrer Nennspannung betreibt, damit dabei der Strom dennoch eingehalten wird, nutzt man wie du bereits gesagt hast die Sens widerstände. Betreibst du deinen Motor aber auf Nennspannung dann brauchst du nicht zwingend die Sens Widerstände.
mit dem MAX wird eine Gleichspannung von 0V....3,3V erzeugt (Seite 13). Könnte man auch mit den Analog Ausgängen des Arduinos realisieren jedoch steht auf Seite 12 der Bereitstellungs Unterlagen, dass keine freien Analog Ausgänge mehr vorhanden sind. Ansonsten wird der MAX über I^2C angesprochen.
Hoffe es reicht dir so Oberflächlich oder hast du eine bestimmte Frage noch dazu?