klok van 4 electro-mechanisch 7segment display's

Alle vragen m.b.t digitale schakelingen m.b.v. losse i.c's
en oplossingen m.b.v. PIC processoren.
Plaats reactie
hansan
Berichten: 11
Lid geworden op: vr 11 mar 2022, 20:30

klok van 4 electro-mechanisch 7segment display's

Bericht door hansan »

Beste Forumlezers,

Ik probeer een 7segment display van de volgende fabrikant aan te sturen:
https://flip-digits.com/

De 'attachment' is een plaatje van mijn breadboard, ik heb 1 spoel getekend, maar er zijn er 7 (per display)

Linker shift-register stuurt een 0 als het segment verborgen moet worden en het rechter
shift-register dan een 1.
bijv voor een 8 wordt dit 0000000x 1111111x (0x00FE)

Het werkte voor een paar seconden. Het rechter exemplaar van de darlington array is/was kapot. 2 pootjes geven niets door, en ic wordt heel heet.

Enig idee wat ik fout doe?

(het is waarschijnlijk wel duidelijk, maar ik ben een absolute beginner)


Met vriendelijke groet,

Han Smolders
Bijlagen
7SegmentTest_bb.pdf
Fritzing
(909.97 KiB) 200 keer gedownload
smd_lover
Moderator
Moderator
Berichten: 1877
Lid geworden op: di 24 mar 2009, 12:23
Locatie: prov Groningen.. .. .. .. .. .. .. .

Bericht door smd_lover »

Je mag maar een kort stroompulsje geven bij dit soort displays.
Hoe doe je de aansturing?
Hoe zorgvuldiger je als topicstarter je probleem omschrijft, hoe meer kans op adequate reacties en een oplossing.
hansan
Berichten: 11
Lid geworden op: vr 11 mar 2022, 20:30

Bericht door hansan »

beste smd_lover,

De aansturing is vanaf een arduino (wemos d1 mini):
de puls is 75 millisecondes.

Code: Selecteer alles

#include <Arduino>

int DS_pin = D5;
int STCP_pin = D3;
int SHCP_pin = D2;

int dec_digits [11] {0x807E, 0xF20C, 0x48B6, 0x609E, 0x32CC,0x24DA, 0x04FA, 0xF00E, 0x00FE, 0x20DE, 0xFE00}; 

void setup() {

  pinMode(DS_pin, OUTPUT);
  pinMode(STCP_pin, OUTPUT);
  pinMode(SHCP_pin, OUTPUT);

}

void loop() {

  digitalWrite(STCP_pin, LOW);
  
  for (int i=0;i<11>> 8);
    shiftOut(DS_pin, SHCP_pin, MSBFIRST,dec_digits[i]);
    digitalWrite(STCP_pin, HIGH);
    delay(75);
    digitalWrite(STCP_pin, LOW);
    delay(1000);
  }
}
Met vriendelijke groet,

Han Smolders
smd_lover
Moderator
Moderator
Berichten: 1877
Lid geworden op: di 24 mar 2009, 12:23
Locatie: prov Groningen.. .. .. .. .. .. .. .

Bericht door smd_lover »

De bovenste 2 ic's zitten niet op de +voeding aangesloten.
Hoe zorgvuldiger je als topicstarter je probleem omschrijft, hoe meer kans op adequate reacties en een oplossing.
hansan
Berichten: 11
Lid geworden op: vr 11 mar 2022, 20:30

Bericht door hansan »

Mijn excuses. Vergeten te tekenen in fritzing. In werkelijkheid komt er 5 volt en aarde vanaf de arduino naar de bovenste rails.
smd_lover
Moderator
Moderator
Berichten: 1877
Lid geworden op: di 24 mar 2009, 12:23
Locatie: prov Groningen.. .. .. .. .. .. .. .

Bericht door smd_lover »

I.p.v. de spoel zou je een klein gloeilampje kunnen aansluiten.
En dan nameten of de signalen wel kloppen. Je kan de tijden in de sketch dan ook even tijdelijk heel lang zetten zodat je makkelijk kunt meten.
Ik zie ook niet hoe de stroom loopt door de spoel omdat hij op 2 ULN-uitgangen zit aangesloten?
Hoe zorgvuldiger je als topicstarter je probleem omschrijft, hoe meer kans op adequate reacties en een oplossing.
hansan
Berichten: 11
Lid geworden op: vr 11 mar 2022, 20:30

Bericht door hansan »

Hartelijk dank voor de tip met het gloeilampje, dat ga ik zeker doen. Mijn vermoeden is dat de pulsjes over de verschillende kanalen wel kloppen. Maar het kan geen kwaad om daar zekerheid over te hebben. Wat de laatste opmerking betreft:
Ik geloof dat ik even goed moet nadenken, want dat klopt natuurlijk van de aansluiting op 2 uitgangen.
hansan
Berichten: 11
Lid geworden op: vr 11 mar 2022, 20:30

Bericht door hansan »

Ik had de werking van een darlington array niet goed begrepen.
Hierbij de nieuwe tekening
Ik kan het niet testen op dit moment omdat 1 van de darlington array's blijkbaar kapot is.
Maar is het mogelijk/goed idee om 2 uitgangen te combineren?
Bijlagen
7Segment_V2.pdf
(939.7 KiB) 194 keer gedownload
smd_lover
Moderator
Moderator
Berichten: 1877
Lid geworden op: di 24 mar 2009, 12:23
Locatie: prov Groningen.. .. .. .. .. .. .. .

Bericht door smd_lover »

Je kan alle 7 spoelen toch gewoon met 1 uln aansturen mits de software klopt.
De plus van de uln moet ook aangesloten worden zodat de interne diodes de uln kunnen beschermen tegen de spanningspiek die een spoel veroorzaakt bij uitschakelen.
Hoe zorgvuldiger je als topicstarter je probleem omschrijft, hoe meer kans op adequate reacties en een oplossing.
hansan
Berichten: 11
Lid geworden op: vr 11 mar 2022, 20:30

Bericht door hansan »

Beste smd_lover,

Hartelijk dank voor de ondersteuning. Het was mijn plan om 2 uln's te gebruiken waarbij 1 de uitgeklapte elementen zou doen en de andere de ingeklapte.
Misschien is dit te complex. Ik zit nu te denken om 1 uln te gebruiken maar de software in 2 stappen te doen. Eerst de hele display 'blank' en dan het cijfer maken.

Ik heb nog een vraag over het tijdelijk aansluiten van de display met het breadboard.
Ik zit nu te hannessen met 14 jump kabeltjes. Ik wilde een soort breakout board maken voor de display of een pcb. (nog nooit gedaan) Is er een beter idee?
hansan
Berichten: 11
Lid geworden op: vr 11 mar 2022, 20:30

Bericht door hansan »

Ik krijg het complete beeld niet goed in mijn hoofd of op papier.

Om de individuele elementen van de display heen en terug te klappen moet ook de polariteit van de spoel worden omgezet. In de versie hiervoor gebruikte ik een h-brug
dit werkte. Maar de hoeveelheid h-bruggen maakte het wat ingewikkeld.
Vandaar de 2 uln's. Is er een mogelijkheid om de polariteit te schakelen na de darlington array?
smd_lover
Moderator
Moderator
Berichten: 1877
Lid geworden op: di 24 mar 2009, 12:23
Locatie: prov Groningen.. .. .. .. .. .. .. .

Bericht door smd_lover »

Ja als het moet omgepoold dan moet je wel een H-brug hebben of een halve brug i.c.m. 2 voedingsspanningen.
Maar daar zijn toch mooie ic's voor. Bijvoorbeeld de L298 of L293. Dan heb je die uln niet nodig.
Hoe zorgvuldiger je als topicstarter je probleem omschrijft, hoe meer kans op adequate reacties en een oplossing.
hansan
Berichten: 11
Lid geworden op: vr 11 mar 2022, 20:30

Bericht door hansan »

Ben weer terug bij de H-bruggen. De display werkt, het circuit klopt.
Er is 1 hardnekkig probleem. De spoelen worden heel heet.
Heeft iemand enig idee wat ik fout doe?

Hierbij de specificaties van het display:
https://store.i-t.com/wp-content/upload ... splay2.pdf
Bijlagen
7Segment_H_Bridge_bb.png
7Segment_H_Bridge_bb.png (547.01 KiB) 12852 keer bekeken
Gebruikersavatar
Stynus
Site Admin
Site Admin
Berichten: 5910
Lid geworden op: vr 16 mei 2003, 20:45
Locatie: Overpelt (België)
Contacteer:

Bericht door Stynus »

Dan stuur je ze te lang aan. In de datasheet zie ik pulse with 1 msec. Dat is heel kort. Daarna pas weer een puls geven als je wil ompolen. Op die tijd kunnen ze niet veel opwarmen.
hansan
Berichten: 11
Lid geworden op: vr 11 mar 2022, 20:30

Bericht door hansan »

De puls was 75 milliseconden, Is nu 1 millseconde. wachttijd daarna 1999 milliseconden.
De spoelen worden nog steeds heel heet. Op een of andere manier verdenk ik het shift register. Ik zou niet weten hoe of waarom :-)

Hierbij de laatste code.

[code]
#include <Arduino.h>

int DS_pin = D5;
int STCP_pin = D3;
int SHCP_pin = D2;

int dec_digits [11] {0x807E, 0xF20C, 0x48B6, 0x609E, 0x32CC,0x24DA, 0x04FA, 0xF00E, 0x00FE, 0x20DE, 0xFE00};

void setup() {

pinMode(DS_pin, OUTPUT);
pinMode(STCP_pin, OUTPUT);
pinMode(SHCP_pin, OUTPUT);

}

void loop() {

for (int i=0;i<11;i++) {
shiftOut(DS_pin, SHCP_pin, MSBFIRST,dec_digits[i] >> 8);
shiftOut(DS_pin, SHCP_pin, MSBFIRST,dec_digits[i]);
digitalWrite(STCP_pin, HIGH);
delay(1);
digitalWrite(STCP_pin, LOW);
delay(1999);
}
}

[/code]
Gebruikersavatar
Stynus
Site Admin
Site Admin
Berichten: 5910
Lid geworden op: vr 16 mei 2003, 20:45
Locatie: Overpelt (België)
Contacteer:

Bericht door Stynus »

Met die code stuur je de spoelen nog continu. Meet maar eens met een multimeter.

Code: Selecteer alles

for (int i=0;i<11>> 8);
shiftOut(DS_pin, SHCP_pin, MSBFIRST,dec_digits[i]);
digitalWrite(STCP_pin, HIGH);
delay(1);
digitalWrite(STCP_pin, LOW);
delay(10);

//Terug 0 uitsturen
shiftOut(DS_pin, SHCP_pin, MSBFIRST,0 >> 8);
shiftOut(DS_pin, SHCP_pin, MSBFIRST,0);
digitalWrite(STCP_pin, HIGH);
delay(1);
digitalWrite(STCP_pin, LOW);


delay(1999);
}
hansan
Berichten: 11
Lid geworden op: vr 11 mar 2022, 20:30

Bericht door hansan »

Beste Stynus,

Mag ik u hartelijk danken! Probleem opgelost. De werking van een shift-register dringt
langzaam door bij mij :-)
Hierbij de laatste code. Ik heb de code tags wegelaten want een regel wordt niet goed weergegeven. Nogmaals hartelijk dank!

#include <Arduino>

int DS_pin = D5;
int STCP_pin = D3;
int SHCP_pin = D2;

int dec_digits [11] {0x807E, 0xF20C, 0x48B6, 0x609E, 0x32CC,0x24DA, 0x04FA, 0xF00E, 0x00FE, 0x20DE, 0xFE00};

void setup() {

pinMode(DS_pin, OUTPUT);
pinMode(STCP_pin, OUTPUT);
pinMode(SHCP_pin, OUTPUT);

}

void loop() {

for (int i=0;i<11>> 8);
shiftOut(DS_pin, SHCP_pin, MSBFIRST,dec_digits[i]);
digitalWrite(STCP_pin, HIGH);
delay(1);
digitalWrite(STCP_pin, LOW);
delay(10);

//Terug 0 uitsturen
shiftOut(DS_pin, SHCP_pin, MSBFIRST,0 >> 8);
shiftOut(DS_pin, SHCP_pin, MSBFIRST,0);
digitalWrite(STCP_pin, HIGH);
delay(1);
digitalWrite(STCP_pin, LOW);

delay(1999);
}
}
hansan
Berichten: 11
Lid geworden op: vr 11 mar 2022, 20:30

Bericht door hansan »

Het lijkt erop dat ook emoticons in de code kunnen doordringen.

#include <Arduino.h>

int DS_pin = D5;
int STCP_pin = D3;
int SHCP_pin = D2;

int dec_digits [11] {0x807E, 0xF20C, 0x48B6, 0x609E, 0x32CC,0x24DA, 0x04FA, 0xF00E, 0x00FE, 0x20DE, 0xFE00};

void setup() {

pinMode(DS_pin, OUTPUT);
pinMode(STCP_pin, OUTPUT);
pinMode(SHCP_pin, OUTPUT);

}

void loop() {

for (int i=0;i<11;i++) {
shiftOut(DS_pin, SHCP_pin, MSBFIRST,dec_digits[i] >> 8);
shiftOut(DS_pin, SHCP_pin, MSBFIRST,dec_digits[i]);
digitalWrite(STCP_pin, HIGH);
delay(1);
digitalWrite(STCP_pin, LOW);
delay(10);

//Terug 0 uitsturen
shiftOut(DS_pin, SHCP_pin, MSBFIRST,0 >> 8);
shiftOut(DS_pin, SHCP_pin, MSBFIRST,0);
digitalWrite(STCP_pin, HIGH);
delay(1);
digitalWrite(STCP_pin, LOW);

delay(1999);
}
}
Plaats reactie