LED Strip mit 5 Kontakten

Hi Leute, ich habe hier eine RGB - Warmwhite - ColdWhite LED Strip mit 5 Kontakten. Die Sind beschriftet:

  • 24
  • Do
  • GND
  • WW
  • CW

Die LED's sind schon verbaut und nun habe ich mich gefragt, ob ich diese mit nem D1 Mini smart machen kann. Bevor ich aber den montierten Controller abschneide, wollte ich schauen, ob das überhaupt geht. Auf dem verbautem Chip steht leider nix drauf. Ich vermute mal, der 'Do' Pin ist eine Bus- oder Datenleitung.
Auf WLED hab ich leider nix mit 5 pins gefunden.
Steuer ich die CW & WW mit nem MOSFET und die RGB mit dem Datenkanal?
Und kann ich dann verschiedene 'LED Stipe Types' am Datenkanal ausprobieren, bis ich den passenden zum ansteuern gefunden habe, oder mach ich dann da was am Strip kaputt?

LG

Und Dankeschön schon mal im Voraus.

Wieso glaubst Du daß wir hier um die Wette Hellsehen?

Gib uns mal einen Link zum Produkt und mach mal ein scharfes Foto von der Strippe (alles zwischen 2 Abschnittsstellen).

Do heißt eigentlich Data Out nicht Data In.

Grüße Uwe

versuche mal zu raten:
DO ist wahrscheinlich Ausgang, am anderem Ende vermutlich DI, handhaben wie gewöhnliche Neopixel,
aber WW und CW vermutlich GND von entsprechenden LED, der positive Kontakt ist 24V.
oder auch nicht.

Ok, ein paar mehr Infos:
Hab am Ende den Difusor abgekratzt:


Zwischendrin ist nicht wirklich viel zu erkennen:

und hier der Controller am Anfang:

Also, ... ist wohl das Ende (Bild1), da passt dann 'Do'. 'Di' steht dann wahrscheinlich am Anfang des Segmentes. Sieht man leider durch den Difusor nicht.
Einen Link zum Produkt habe ich leider nicht; das würde mir selbst auch ein wenig weiter helfen.
24 V / GND passen, das habe ich messen können, sowie auch das Netzteil am Ausgang 24 V hat. CW und WW sind die GND von WW und CW. Deshalb die Idee mit dem MOSFET und eine ansteuerung mit PWM.

Das glaube ich auch.

Den Rest:

Links die Netzteilbuchse; da ist wahrscheinlich ein Mikrophon (MIC) ?? wahrscheinlich ein Spannungsstabilisator oberhalb vom MIC; ein Infrarotfernsteuerungsempfänger (IRM) und ein IC, wahrscheinlich ein Microcontroller

Bitte mach ein Foto gerade von vorn von einem dieser Kupferfarbigen Streifen (im Bild in der mitte) zu nächsten:

grafik

Hi, @uwefed, das sehe ichauch so.

Hier ein schärferes Bild, aber durch den Difusor kann man leider nicht wirklich was erkennen:


Das Plastik- Gummizeug wollt ich nicht unbedingt mittendrin wegkratzen. Is arg hartnäckig.

Schneiden Sie vorsichtig auf die Platine/den Streifen, vor den fünf Pads und nach den fünf Pads. Das RTV über den fünf Pads blättert wie Gummizement ab, löst sich aber schließlich. Sie können die Pads später mit neuem RTV neu abdecken, um sie wasserdicht zu machen.

Ich wollte ein Bild mit 2 der Kupferstreifen um zu verstehen, was alles auf so einem Stück Streifen drauf ist.
Mir ist bewußt daß der Gummiüberzug einiges verdeckt. aber ich sehe genug um mir eine Meinung zu bilden.
Grüße Uwe

Nun ja, der Strip hängt an der Decke und ich wollte eigentlich gar nich viel weg machen. Hab aber dann trotzdem versucht, den Anfang frei zu machen. Bei meinem talent habe ich natürlich irgendwie die Kontakte an der Platine zerstört. Dann hab ich die kopfüber abgelötet und einen stecker angelötet, mit dem ich testen konnte.
Also:
24V, Di / Do und Gnd sind klar und laufen mit dem NeoPixel Treiber problemlos.
Das, was sich als 'einfach' dargestellt hat, verursacht jetzt die Probleme.
Hab zwei MOSFET und ein Level Shifter eingebaut. Das eine weiße geht aber nicht ganz aus.

Stöpsel ich jetzt das CW ab, funktioniert das WW mit dem PWM wie erwartet und genauso andersrum. Aber mit beiden zusammen, bleibt ein weiß schwach an.

Woran kann das liegen?

Habe jetzt gelesen, dass es 'RGB-CCT' Strips gibt, die der Beschreibung her auf meine Variante passen würden. Genaure Dokus o.ä. finde ich zu den Strips Varianten aber leider nicht.

Hast du mal einen Schaltplan? Wozu der Level Shifter? Und welcher? und der Code ist ach noch interessant.

Hi,
der Level Shifter, um von 3.3V am D1 Mini auf 5V als PWM für den RGB Di.
Is so ein 4 Kanal konverter von AZ Delivery.

Die haben den aber nicht mehr - nur noch den 8 Kanal

Ah, doch, da: IOT 4 Kanal IIC I2C Premium Pegelwandler | Bi-direktionales 5V zu 3.3V

Funktioniert ganz gut und deckt sich mit der / oder vielen Dokus, die ich gefunden habe.

Die Schaltpläne, die ich kombiniert habe:
Die RGB NeoPixel steuere ich so an (12V Version - untere Bild, von WLED Projekt - Getting Started):

und die beiden WW und CW habe ich jeweils so angeschlossen (Bild auch von WLED Projekt - Getting Started):
87e3f4ef-05fb-452a-8cc1-d0187254b466

Code - Hm... Laaaaaaaang. Ich versuche es mal:
relevante Codeausschnitte von RGB NeoPixel ansteuerung:

void moduleNeoPixel::init() {
	strip = new Adafruit_NeoPixel(pixelCount, neoPixelPin, NEO_RGB + NEO_KHZ800);
}
void moduleNeoPixel::cycle() {
	if(wpFZ.calcValues) {
		calc();
	}
	publishValues();
}
void moduleNeoPixel::calc() {
	unsigned long currentMillis = millis();
	if(demoMode) {
		if((currentMillis - patternPrevious) >= patternInterval) {
			patternPrevious = currentMillis;
			if(++modeCurrent > 9)
				modeCurrent = 1;
		}
	}
	if(currentMillis - pixelPrevious >= pixelInterval) {
		pixelPrevious = currentMillis;
		switch (modeCurrent) {
			case ModeColorWipeRed:
				if(modeCurrentLast != modeCurrent)
					wpMqtt.mqttClient.publish(mqttTopicModeName.c_str(), "colorWipe Red");
				ColorWipeEffect(strip->Color(255, 0, 0), 50); // Red
				break;
			case ModeColorWipeGreen:
				if(modeCurrentLast != modeCurrent)
					wpMqtt.mqttClient.publish(mqttTopicModeName.c_str(), "colorWipe Green");
				ColorWipeEffect(strip->Color(0, 255, 0), 50); // Green
				break;
			case ModeColorWipeBlue:
				if(modeCurrentLast != modeCurrent)
					wpMqtt.mqttClient.publish(mqttTopicModeName.c_str(), "colorWipe Blue");
				ColorWipeEffect(strip->Color(0, 0, 255), 50); // Blue
				break;
			case ModeTheaterChaseWhite:
				if(modeCurrentLast != modeCurrent)
					wpMqtt.mqttClient.publish(mqttTopicModeName.c_str(), "theaterChase White");
				TheaterChaseEffect(strip->Color(127, 127, 127), 50); // White
				break;
			case ModeRainbow:
				if(modeCurrentLast != modeCurrent)
					wpMqtt.mqttClient.publish(mqttTopicModeName.c_str(), "rainbow");
				RainbowEffect(10); // Flowing rainbow cycle along the whole strip
				break;
			case ModeRunnerRed:
				if(modeCurrentLast != modeCurrent)
					wpMqtt.mqttClient.publish(mqttTopicModeName.c_str(), "Runner Red");
				RunnerEffect(strip->Color(127, 0, 0), 50); // Runner Red
				break;
			case ModeRunnerGreen:
				if(modeCurrentLast != modeCurrent)
					wpMqtt.mqttClient.publish(mqttTopicModeName.c_str(), "Runner Green");
				RunnerEffect(strip->Color(0, 127, 0), 50); // Runner Green
				break;
			case ModeRunnerBlue:
				if(modeCurrentLast != modeCurrent)
					wpMqtt.mqttClient.publish(mqttTopicModeName.c_str(), "Runner Blue");
				RunnerEffect(strip->Color(0, 0, 127), 50); // Runner Blue
				break;
			case ModeRandom:
				if(modeCurrentLast != modeCurrent)
					wpMqtt.mqttClient.publish(mqttTopicModeName.c_str(), "Random");
				RandomEffect(500); // Random
				break;
			case ModeComplex:
				if(modeCurrentLast != modeCurrent)
					wpMqtt.mqttClient.publish(mqttTopicModeName.c_str(), "Complex");
				break;
			default:
				if(modeCurrentLast != modeCurrent)
					wpMqtt.mqttClient.publish(mqttTopicModeName.c_str(), "Mode Static");
				SimpleEffect(valueR, valueG, valueB);
				break;
		}
		modeCurrentLast = modeCurrent;
	}
}
// example Effects
void moduleNeoPixel::RandomEffect(int wait) {
	int pixel;
	byte r, g, b;
	pixelInterval = wait;
	strip->clear();
	r = random(0, 255);
	g = random(0, 255);
	b = random(0, 255);
	strip->fill(strip->Color(r, g, b));
	for(uint p = 0; p < 20; p++) {
		pixel = random(0, pixelCount);
		r = random(0, 255);
		g = random(0, 255);
		b = random(0, 255);
		strip->setPixelColor(pixel, strip->Color(r, g, b));
	}
	strip->show();
}
void moduleNeoPixel::SimpleEffect(byte r, byte g, byte b) {
	setValueR(r);
	setValueG(g);
	setValueB(b);
	demoMode = false;
	modeCurrent = ModeStatic;
	strip->fill(strip->Color(r, g, b));
	strip->show();
}

relevante Codeausschnitte von PWM ansteuerung (CW && WW) jeweils eine Instanz:

void moduleAnalogOut::init() {
	// section for define
	analogOutPin = D6;
	pinMode(analogOutPin, OUTPUT_OPEN_DRAIN);
}
void moduleAnalogOut::calc() {
	if(handValue != handValueSet) {
		handValue = handValueSet;
	}
	if(handError != handSet) {
		handError = handSet;
	}
	if(handError) {
		output = handValue;
	} else {
		output = autoValue;
	}
	uint16 hardwareout = wpFZ.Map(output, 0, 100, 0, 255);
	analogWrite(analogOutPin, hardwareout);
}

und vielleicht noch daraus:

long wpFreakaZone::Map(long in, long inMin, long inMax, long outMin, long outMax) {
	if(inMax - inMin == 0) {
		DebugWS(strERRROR, "Map", "risky math operation: 'inMax - inMin == 0'");
		return 0;
	}
	long returns = map(in, inMin, inMax, outMin, outMax);
	if(returns < outMin) returns = outMin;
	if(returns > outMax) returns = outMax;
	return returns;
}
// seems like global, static
wpFreakaZone wpFZ;