Beiträge von Organized

    Hallo zusammen,


    mein Haus hat an jeder der 4 Außenwände einen Bewegungsmelder mit Flutlicht. Für diese Außenbeleuchtung gibt es im Wohnzimmer ein "Kontrollpanel", für jeden Bewegungsmelder ein eigenes Lämpchen. Diese Lämpchen bekommen ihren Strom anscheinend über einen Klingeltrafo (die Relais dafür sind im Verteilerkasten). Im eingeschalteten Zustand liegen ~6,8V AC an und im ausgeschalteten Zustand ~2,15V AC (ggf. bei Last nahezu 0V?).


    Bisher waren da einfach so kleine Glühlämpchen angeschlossen. Da wir das Haus nun sanieren, möchte ich gerne dieses Kontrollpanel erneuern und ggf. mit LEDs ausstatten. Meine Kenntnisse in Elektrotechnik sind inzwischen aber so eingerostet, dass ich echt keinen Plan habe, wie aufwändig das werden könnte. Ich muss ja zum einen auf die 6,8V AC reagieren und zum anderen die passende Spannung für die LED bereitstellen.


    Hat hier jemand Lust mir auf die Sprünge zu helfen? Löten ist kein Problem, ich bräuchte nur eine geeignete Schaltung dafür.

    Es müsste ja eigentlich eine Kombination aus Gleichrichter, Kondensator und Widerstand ausreichend sein, oder?


    Freue mich auf eure Antworten!


    VG Andy

    Moin


    Ich habe mir vor Ewigkeiten mal eine Maglite (3xBaby) auf LED umgebaut. Der Kühlkörper und Treiber kam soweit ich mich erinnere aus den Staaten. Derzeit ist keine LED drin (ehrlich gesagt weiß ich nicht, wo die hin ist), aber ich würde die Taschenlampe gerne wieder zum Leben erwecken. Die Seoul P7 ist leider nur noch in China gar nicht mehr bestellbar und der aktuellste Stand der Technik ist das auch nicht.


    Weiß jemand vllt. welches "Umbaukit" ich hier habe? Der KK ist grau eloxiert. Der Treiber dürfte halt passend für die P7 sein.


    Gibt es eine einfache Möglichkeit hier eine aktuellere LED einzubauen, ohne den Treiber anpassen zu müssen? Würde das dann auch mit dem Reflektor und der Linse (statt des Glases) hinhauen? Ich frage einfach mal doof in die Runde. :D


    Gruß,
    Andy


    EDIT: Wie wäre es hiermit? https://www.led-tech.de/de/Hig…tine-LT-1943_120_170.html (XM-L-U3 auf CU-Kern)
    Oder würde ich die mit dem Treiber direkt plätten?


    EDIT2: Oder mal anders gefragt - hat hier jemand noch eine Seoul P7 rumliegen, die er mir verkaufen möchte? :) Ob warm- oder kalt-weiß ist mir persönlich egal. Ich glaube nämlich, dass die CREE nicht geeignet ist, weil sie zu klein ist und somit nicht bis in den Reflektor herein ragt.

    Ok, sorry, ich bin doof.


    In nativem C ist es einfacher als in einem C-Assembler-Mix.



    So funzt es!


    Danke an Alle - ich werde demnächst ein Tutorial dazu schreiben bzw. meine Dokumentation veröffentlichen :)

    Also, ich habe mal versucht, das in C umzusetzen.



    Leider kommen da nur ganz lustige Sachen heraus, die LED blinkt wild vor sich hin. Sprich, das Ergebnis ist nicht mal im Ansatz konstant (obwohl die Temperatur gleich bleibt).

    Wo finde ich die? 8| Habe jetzt schon viel danach gesucht, aber leider finde ich keinen Artikel, Forumsbeitrag, o.ä. darüber.


    Aber sehr gute Neuigkeiten: Habe den anderen IC angelötet (diesmal richtig) und mit einem Voltmeter gemessen - 3,05V! Also etwa 31°C. Kann ich den IC in Wasser halten? Dann könnte ich es genau kalibrieren: Glas mit Wasser, IC und normales Termometer rein. Dann so lange am Poti spielen, bis die Werte überein stimmen. Aber das wäre erst das Feintuning - erstmal muss die Software richtig laufen.

    Kann der LM335 kaputt gehen, wenn man ihn falsch anschließt? Hatte den +-Pin von ihm an 5V, dürfte ein Kurzschluss gewesen sein und er jetzt ist er hinüber, oder? Habe glücklicherweise 2 Stück gekauft...


    Programmierung sieht bisher so aus:
    http://pastebin.com/p73rtAe2


    Kann ich die Messungen irgendwie bremsen? Das flackert jetzt ordentlich hin und her (das tut es hoffentlich nicht mehr, wenn ich den LM335 getauscht habe). Prescaler ist schon auf 128, oder bezieht sich das nur auf die Frequenz des Messwerks? Wenn ja, was ist da optimal?

    Also einfach 5V (die auch am Vcc anliegen) an den AREF-Pin packen? Muss ich dann noch was an den Fusebits ändern, oder erkennt der das automatisch? Nicht, dass ich da einen Kurzschluss produziere.


    Auszug aus Datenblatt:

    Zitat

    If the user has a fixed voltage source connected to the AREF pin, the user may not use the other reference voltage options in the application, as they will be shorted to the external voltage. If no external voltage is applied to the AREF pin, the user may switch between AVCC and 2.56V as reference selection. The first ADC conversion result after switching reference voltage source may be inaccurate, and the user is advised to discard this result.


    Unterstrichen: Also muss ich irgendwas ändern? Oder darf ich im Programmablauf kein bestimmtes Bit in einem Register setzen?


    Fett: Oder muss ich gar nichts an AREF anschließen? Da steht ja, dass man zwischen Vcc und 2,56V wählen kann. EDIT: Ist es richtig, wenn ich Vcc als Referenzspannung haben möchte, dass ich dann das Bit REFS0 in ADMUX setzen muss? REFS1 bleibt dann auf 0. Muss ich dann noch einen Kondensator zwischenschalten (100nF)?

    Hi


    Ich besorge mir heute den LM335 und einen passenden Widerstand von 2,5kOhm. Ist vllt. nicht so genau, aber das ist mir jetzt ziemlich egal. Abgabe ist jetzt endgültig am Donnerstag (die gesamte Klasse bekommt nichts gebacken weil der Lehrer einfach nichts erklärt bzw. es selbst nicht kann :D).


    Code
    O 5V
    |
    R 2,5kOhm
    |
    |-- 10mV/K
    |
    LM335
    |
    O GND


    Funktioniert so doch, oder?


    Wie ist das mit dem Analog-Digital-Converter des Atmega8? Der kann doch von 0V bis 5V in 10bit-Auflösung umwandeln oder?


    EDIT: Habe gerade gelesen, dass er von 0V bis VREF umwandeln kann. Am einfachsten benutze ich dann die interne VREF (2,56V) und schalte einfach zwischen "10mV/K" (bei 0° = 273K * 10mV = 2,73V) und ADC zwei Dioden (also Spannungsabfall 1,5V etwa) oder? Dann kann ich ja bis (2,73V - 1,5V) / 10mV = 123°C messen, ohne VREF zu verändern, oder?


    Gruß,
    Andy

    SDA: Port C, Pin 3
    SCL: Port C, Pin 4


    Konfiguration:


    Temperatur holen:

    Code
    i2c_master_start();
    i2c_master_write(TEMP_ADDR); // TEMP_ADDR = 0b10010001
    temp = i2c_master_read(0);
    temp2 = i2c_master_read(1);
    i2c_master_stop();


    Funzt nicht! :(

    Kann die Funktionen jetzt nutzen...


    Aber entweder ist die Bibliothek fehlerhaft, oder ich zu blöd. Der Compiler meckert wegen der Konstante "DDC7" herum, die kennt er nicht, steht aber so im Quelltext der Bib.? Habe es mal spaßeshalber in 7 geändert, dann kann ich es kompilieren, linken und überspielen, aber hier das nächste Problem: So wie ich dachte, man müsse die Temperatur aus dem LM75 auslesen, klappt es wohl nicht.


    Er hat ja 9 bit.
    0 0000 0000


    Das MSB gibt an, ob die Temperatur positiv oder negativ ist. Das LSB gibt an, ob die Nachkommastelle 5 oder 0 ist (also *,5 oder *,0). Das ist mir aber egal, von daher könnte ich das Byte einfach um einen nach rechts verschieben und gut ist.


    Wie lese ich das aber jetzt aus? Ich habe 2 mal die Lese-Methode aufgerufen, das erste mal habe ich den Rückgabewert (Aufruf mit ACK) verworfen, da darin ja nur angegeben ist, ob die Temperatur positiv oder negativ ist. Beim zweiten Auslesen (NAK) habe ich dann die Temperatur eingelesen und um einen nach rechts geshiftet.


    In temp steht dann aber ein Wert drin, der sich nicht ändert. Blöderweise weiß ich halt auch nicht, welcher da drin steht :( Aber zumindest nicht die Temperatur, sonst würde er sich ja ändern.


    Code
    i2c_master_init();
    
    while (1) {
    	// Temperatur holen
    	i2c_master_start();
    	i2c_master_read(0);
    	temp = i2c_master_read(1);
    	i2c_master_stop();
    	temp >>= 1;
    	[...]

    Hi


    Wenn ich die von dir verlinkte Bibliothek verwenden möchte, kommt das...



    Ich habe die Bibliothek aber eingebunden (die Dateien aus der RAR befinden sich im Unterordner i2c):

    Code
    #include "./i2c/i2c_software_master.h"


    Warum kennt der das denn jetzt nicht?


    Gruß,
    Andy


    P.S.: Benutze myAVR Workpad PLUS (Demo)

    So langsam weiß ich echt nicht mehr weiter, wie ich diese schei* Temperatur auslesen soll :cursing:


    Status bisher: PWM über 8bit Timer, Temp über 16bit Timer, Hauptschleife macht nichts.


    Habe versucht, mir eine Hardware-TWI-Implementation zu programmieren, jetzt sehe ich aber, dass dieser myTWI Temperatursensor (von myAVR) nicht an PC4 (SDA) und PC5 (SCL) sondern PC3 und PC4 hängt... WER DENKT SICH SO EINE SCHEI**E AUS? X( :cursing:


    Jetzt gibt es ja noch Interruptgesteuerte I2C-Implementationen, u.a. die von Peter Fleury ( http://jump.to/fleury ). Allerdings habe ich da absolut keine Peilung, wie ich das Ding benutzen muss, ob ich das erst bauen muss (oder wofür ist das Makefile?), wenn ja wie? Zudem müsste ich dann ja einen Timer wieder frei machen, oder nicht? Aber gut, das ist ja dank Pesis Vorschlag dazu (in Hauptschleife auslagern) nicht allzu dramatisch.


    Hier mein bisheriger Code:
    http://pastebin.com/xeKrgmg1 (Pastebin wegen Syntax-Highlighting)

    Was ich so direkt allerdings nicht aus Deinem C-Code ablesen kann ist, was Du unter "Light-Emission-normalized" verstehst?


    Eventuell die Anpassung an das menschliche Auge? Nur eine wage Vermutung ;)


    Danke für eure Antworten und ganz besonders an Neni für die Umrechnung. Hat mir sehr geholfen bzw. Arbeit abgenommen :) Projektabgabe ist morgen, allerspätestens nächste Woche Montag :)

    Hi


    (Hier war vorher eine andere Frage, aber die ist so peinlich, die musste ich löschen :D )


    Habe jetzt die PWM im 8bit-Timer. Wo soll ich denn nun die Berechnung hinpacken? So wie ich das beim 16bit-Timer verstanden habe, kann der keine Interrupts auslösen?


    Die Berechnung also in die Main und mit _delay_ms(); bremsen?


    Gruß,
    Andy

    Hallo zusammen,


    danke schon mal für eure Antworten.


    Habe es jetzt so umgesetzt, dass ich den HSV-Farbraum benutze und diesen dann in RGB umrechne. Die Temperatur hole ich mir jetzt über einen LM75 per TWI, denn für das verwendete myAVR-Board gibt es eine Erweiterungsplatine dafür. Damit bin ich aber noch nicht fertig, derzeit gebe ich noch Temperaturen von Hand ein (was vorerst reicht).


    Hier mein C-Code:


    Ich berechne ja jetzt in jedem Durchlauf die Werte neu. Ist natürlich nicht so schön und führt dazu, dass die LED stark flackert.


    Wenn ich die Variablen global mache, wie kann ich z.B. eine Funktion alle x Takte/ms aufrufen? Dass die Temperatur nicht in jedem Durchlauf geholt wird und in RGB-Werte umgesetzt wird?


    Gruß,
    Andy

    Hallo


    Für ein Schulprojekt muss ich mit einem Mikrokontroller (myAVR, also Atmega 8) arbeiten. Ich habe mir überlegt, dass ich mit einem Sensor (welcher am besten? NTC? PTC?) die Temperatur messe und diese dann über eine RGB-LED (3fach Rebel) darstellen. Als KSQ verwende ich einfach eine ganz einfache LM317-KSQ, die LEDs auf 50mA um die Hitzeentwicklung gering zu halten (Kühlung vorhanden). Der Mikrokontroller wird in C programmiert.


    Hier meine Fragen:
    1. Welchen Sensor nehme ich am besten? Wie ist es am einfachsten in Sachen Schaltung und Programmierung?
    2. Wie setze ich die Temperatur am besten in einen Farbwert (also R, G und B) um? Gibt es da altbekannte Algorithmen um einen einzelnen Wert in drei Werte quasi aufzuteilen?
    3. Hat der Atmega8 drei Hardware-PWM-Ausgänge oder muss ich es über Software-PWM realisieren? (soweit wie ich das erkennen konnte hat der 2x8bit und 1x16bit?)


    Gruß,
    Andy