Flip flop tbv navigatiescherm

Thevel

Golden Member

Contact dender ?

Waarschijnlijk wel.
Volgens mij heeft een 4013 geen Schmitt-trigger ingang en ondanks dat ik een aantal passieve debouncing schema's heb geprobeerd is het lastig om de 4013 goed op een drukknop te laten werken.

Omdat de TS nog een flip-flop over heeft is daar wel een goede puls mee te maken.

Nice! Bedankt voor het testen.
We zullen vanmiddag eens kijken of wij het ook aan de praat krijgen.
Vanzelfsprekend zal ik de bevindingen hier posten

Geen fratsen. Dat scheelt.

Hmm, nu hebben we de aanpassing gemaakt en het lijkt ook perfect te werken. Echter...

De schakeling werkt elke 5 seconden.
Dus drukken we de knop in, dan gaat het scherm omhoog tot aan de open-limit. Daarna stopt die ook. Maar na 5 seconden gaat het scherm weer omlaag. Na 5 seconden weer omhoog, enz enz enz.
Hebben jullie nog ideeën?

Geen fratsen. Dat scheelt.
Shiptronic

Overleden

Je vraagt een flipflop, je krijgt een oscillator :)

Wie de vraag stelt, zal met het antwoord moeten leren leven.

hehe, indeed :P

het viel ons op dat het precies 5 seconden duurt.
halen we de condensator er tussenuit (100N op het laatste schema van Thevel), dan doet die er 10 seconden over.

Geen fratsen. Dat scheelt.
Thevel

Golden Member

het viel ons op dat het precies 5 seconden duurt.

Ik heb geen idee waar die 5 seconden vandaan komt, dus de flip-flop nogmaals gebouwd (echter zonder transistors etc.)
Op uitgang Q2 heb ik een LED gebruikt en de schakeling werkt zonder problemen, als de LED uit is dan blijft deze uit en als de LED aan is dan blijft deze ook aan.

Wat voor voeding gebruik je? zit daar geen "rotzooi" op?
Zit de 100N ontkoppel condensator wel dicht bij de voedingsaansluitingen van de 4013?

Het viel mij wel op dat de set ingang waar de drukknop op zit behoorlijk gevoelig was, met lange draden naar de knop kan dat problemen opleveren.
Het is beter om de weerstand te verlagen naar 4,7KΩ en er een 100nF condensator er over te plaatsen.

Met een "rottige" drukknop werden soms meerdere pulsen gegeven waardoor de flip-flop soms te snel schakelde.
Het verhogen van de weerstand aan Q1 naar 470KΩ lost ook dit probleem op.

Deze aanpassingen hebben echter niets met het "5 seconden probleem" te maken.

Thevel

Golden Member

Hier de complete schakeling zoals ik hem getest heb.

Edit/
Tekenfoutje hersteld, heeft echter niets met de 5 seconden te maken.

trix

Golden Member

ik wil toch vermelden dat ik het bewonderings waardig vind dat thevel de TS zo uitgebreid helpt, hulde van mijn zijde (voor wat het waard is)

eigenwijs = ook wijs

Daar sluit ik me natuurlijk heel erg bij aan.
Helemaal top dat er mensen zijn die zo veel moeite nemen om de onwetende te helpen :)
Direct ook (weer) een dikke duim omhoog voor Jan, die me ook via Circuits Online helpt!
Maar Thevel net zo goed!!

Geen fratsen. Dat scheelt.

Komt natuurlijk ook omdat de TS zelf ook leuk meedoet en en het een leuk projectje is (even met de stroopkwast ;-).)
Er zijn er genoeg die een vraag stellen en dan plots dood blijven :(

PS zou het niet handiger zijn (een volgende keer) te werken met gaatjesboard 3 gaatjes per eiland ? hoef je minder losse draadjes te trekken :)

stop het overmatig spatiegebruik !

Helaas lukt het ons maar niet om de schakeling naar behoren te laten werken.
Nu heeft iemand op het Volvo forum iets anders bedacht, zouden jullie hier eens naar willen kijken?

effe 'copy-paste' :P

Benodigdheden:
1x Volvo RTI scherm (Volvo part 9452064)
1x Arduino Nano (+/- 7 euro bij DX.com)
1x Deek-Robot L293D motorcontroller (8 euro bij Raspberrypishop)
4x 10K weerstand
4x 4,7K weerstand
2x 4N25 optocoupler
2x 1N4184 diode

http://www.volvoc70forum.nl/media/c70/rti/20150831_schema_rti_motor_sturing_2.jpg

In het hart van het geheel heb ik gekozen voor een Arduino Nano V3.0, omdat deze bijzonder klein (45x18mm) is en makkelijk in de schermbehuizing te verstoppen is. Omdat de Arduino geen 12 volt op de digitale inputs kan verwerken, zal dit verlaagd moeten worden naar 5 volt. Dit gebeurt met behulp van 2 optocouplers (4N25).

De Arduino
De pinbezetting:
D2: Controleert of het contact aan is
D3: Geactiveerd als het scherm omlaag is
D4: Geactiveerd als het scherm omhoog is
D5: Knop om het scherm te activeren
D6: Activeer motor voor scherm omhoog
D7: Activeer motor voor scherm omlaag

Het idee:
Pinnen 3 en 4 controleren of het scherm in de hoogste of laagste stand zitten. Op het moment dat het scherm volledig ingeklapt is, zal de knop (in de code "endbtn_down") ingedrukt zijn en daarvoor zal er op pin 3 5 volt komen te staan. Pin 4 ("endbtn_up") doet hetzelfde, maar dan met het scherm in de hoogste stand.
Op pin 2 staat 5 volt op het moment dat het contact aan is ("engine_running" in de code). Als het contact uit staat, kan het scherm niet geactiveerd worden.
Te slotte zit op pin 5 de knop ("button_up" in de code) aangesloten waarmee de gebruiker het scherm omhoog kan brengen. Zolang er spanning wordt gemeten op pin 5, zal het scherm omhoog blijven. Als de spanning wordt weggenomen en het scherm is nog niet beneden, zal het scherm naar beneden gedraaid worden.

Er zijn dus een paar voorwaarden die voor iedere handeling gecontroleerd worden:
Wat is de positie van het scherm?
Staat het contact aan?
Heeft de gebruiker de knop voor het scherm omhoog geactiveerd?

Als er aan bepaalde combinaties van deze voorwaarden wordt voldaan, zal het Arduino printje een opdracht sturen naar de motorcontroller om zo de motor te besturen welke het scherm omhoog en omlaag brengt.

De motorcontroller?
De Arduino kan de motor niet rechtstreeks aansturen, omdat die het vermogen niet kan leveren. Om schade te voorkomen, gebruik ik een simpele motorcontroller van Deek-Robot op basis van de L293D controller. Op de controller zitten leds op de uitgangen, zodat je kunt zien of ze geactiveerd zijn (handig voor het proof of concept).

http://www.volvoc70forum.nl/media/c70/rti/20150725_deek_robot_print.jpg

De pinbezetting voor de motorcontroller is vrij simpel:
VCC: 5 volt input
GND: Ground
IN1: Aansluiten op Pin 6 van de Arduino
IN2: Aansluiten op Pin 7 van de Arduino
A-: Aansluiten op de ene pool van de motor
A+: Aansluiten op de andere pool van de motor

De code
De Arduino is van zichzelf niet veel meer of minder dan een microcontroller (Atmega 328 in dit geval), welke je vrij kunt programmeren met behulp van de gratis software die je kunt downloaden op www.arduino.com. Zonder programma doet de Arduino niets. Het programmeren is niet gek moeilijk en er is veel over te vinden op de fora van Arduino. Gelukkig maar, want ik heb nog nooit iets geprogrammeerd voor een Atmega microcontroller en ik heb ook weinig ervaring met elektronica.

Na een paar uur aanmodderen en testen kwam het volgende in de Arduino te staan:
[code]
//Volvo RTI motor controller for 1999 RTI system installed on
//the S70, V70 classic and C70 untill 2014.
//Requires Arduino Nano + Motorcontroller + 2 optocouplers
//Installation instructions (in Dutch): http://www.volvo850forum.nl/index.php/topic,75682.msg1608670.html#msg1…
//By P. Janssen, The Netherlands

//Declaration of variables
int motor_forward = 7;
int motor_reverse = 6;
int button_up = 5;
int endbtn_up = 4;
int endbtn_down = 3;
int engine_running = 2;
int engine_value = 0;
int endbtn_upValue = 0;
int endbtn_downValue = 0;
int button_upValue = 0;

// the setup routine runs once when you press reset:
void setup()
{
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);

// initialize the digital pin as an output.
pinMode(motor_forward, OUTPUT);
pinMode(motor_reverse, OUTPUT);

// make the pushbutton's pin an input:
pinMode(button_up, INPUT);
pinMode(endbtn_up, INPUT);
pinMode(endbtn_down, INPUT);
pinMode(engine_running, INPUT);
}

// the loop routine runs over and over again forever:
void loop() {
//Read input pins
engine_value = digitalRead(engine_running);
endbtn_upValue = digitalRead(endbtn_up);
endbtn_downValue = digitalRead(endbtn_down);
button_upValue = digitalRead(button_up);

//Serial Print to USB
//For debug purposes. Disable in production environment.
Serial.print("Engine Running:");Serial.println(engine_value);
Serial.print("\tEnd Button up:");Serial.println(endbtn_upValue);
Serial.print("\tEnd Button down 3:");Serial.println(endbtn_downValue);
Serial.print("\tButton up:");Serial.println(button_upValue);

//Set default: Display motor is off
digitalWrite(motor_forward,LOW); //Pin D6 will be LOW
digitalWrite(motor_reverse,LOW); //Pin D7 will be LOW

//If current state is NOT up and contact is on/engine is running and the switch for the display is ON, bring display up.
if ((engine_value == HIGH) && (button_upValue == HIGH) && (endbtn_upValue == LOW)) {
digitalWrite(motor_forward,HIGH); //Pin D6 will be HIGH
digitalWrite(motor_reverse,LOW); //Pin D7 will be LOW
}

//If current state is up and contact is off/engine is NOT running, bring display down.
else if ((engine_value == LOW) && (button_upValue == HIGH) && (endbtn_downValue == LOW)) {
digitalWrite(motor_forward,LOW); //Pin D6 will be LOW
digitalWrite(motor_reverse,HIGH); //Pin D7 will be HIGH
}

//If current state is NOT down and contact is on/engine is running and the switch for the display is OFF, bring display down.
else if ((engine_value == HIGH) && (button_upValue == LOW) && (endbtn_downValue == LOW)) {
digitalWrite(motor_forward,LOW); //Pin D6 will be HIGH
digitalWrite(motor_reverse,HIGH); //Pin D7 will be LOW
}

//If nothing is true, don't move the screen.
else {
digitalWrite(motor_forward,LOW); //Pin D6 will be LOW
digitalWrite(motor_reverse,LOW); //Pin D7 will be LOW
}
}
[/code]

Tot zo ver.
Hopelijk werkt dit lekker en kan ik binnenkort gaan navigeren :D

Geen fratsen. Dat scheelt.

lijkt me prima, door met een stukje code te werken ben je erg flexibel en kun je extra functie doorgaans simpel bijbouwen.
(bijv, als na x seconden na het open commando de eindschakelaar van open niet inkomt, dan weer dicht, of net andersom ...)

De opto's zijn niet echt nodig, met een spanningsdeler van 2 weerstanden zou je ook op de analoge ingangen 1/4 (beetje marge houden) van de geschakelde accuspanning kunnen aanbieden.
bijv 1k en 3k3 ...

stop het overmatig spatiegebruik !
Thevel

Golden Member

Op 28 juli 2015 08:16:18 schreef Daanium:
Helaas lukt het ons maar niet om de schakeling naar behoren te laten werken.

Vreemd, had de schakeling getest, werkt bij mij zonder problemen.

Maar goed, je hebt nu iets anders gevonden, hopen dat het nu beter gaat.
Succes!

[Bericht gewijzigd door Thevel op dinsdag 28 juli 2015 23:17:08 (15%)

Op 28 juli 2015 23:14:50 schreef Thevel:
[...]Vreemd, had de schakeling getest, werkt bij mij zonder problemen.

Maar goed, je hebt nu iets anders gevonden, hopen dat het nu beter gaat.
Succes!

Inderdaad vreemd, ik weet niet of het gepast is om te vragen, maar als je zin en tijd hebt is je hulp welkom :)
Ik heb Jan een paar keer gevraagd of ik gebruik mocht maken van zijn aanbod om me te helpen met het daadwerkelijk in elkaar zetten van de print. Maar helaas geen reactie meer.
Ik heb namelijk twee van die RTI schermen, dan kan ik beide schakelingen proberen ;)

Geen fratsen. Dat scheelt.
Thevel

Golden Member

Helpen wil ik natuurlijk wel.

Maar wat werkt er niet?

We hebben het printje zo gemaakt als op het schema.
Als we nou het motortje aansluiten, en op de knop drukken, dan werkt het ook goed.
Dus 1x drukken; scherm gaat omhoog,
weer 1x drukken; scherm gaat omlaag.

Het probleem zit 'm in de tijd na het drukken.
als we het scherm omhoog doen en we wachten dan (dus eigenlijk zou ik dan beginnen met navigeren :D), dan gaat het scherm na 5 seconden weer omlaag.
Na deze automatisch actie, gaat het scherm ook weer omhoog na 5 seconden, daarna weer omlaag, enz enz enz

Geen fratsen. Dat scheelt.
Thevel

Golden Member

Even voor de zekerheid, is de flipflop volgens dit schema gebouwd?

Wat gaat de tijd snel en wat leven we toch in een leuke wereld!

Afgelopen zaterdag heb ik een pakketje ontvangen, een pakketje gericht aan mij maar zonder gegevens van een afzender
Geen idee wat het was, dus maar eens open gemaakt:

http://www.volvoc70forum.nl/media/c70/rti/TomtomPost1.jpg

http://www.volvoc70forum.nl/media/c70/rti/TomtomPost2.jpg

https://i.ytimg.com/vi/07oFXtwSeKg/mqdefault.jpg <-- video !

kijk nou! een werkende RTI-scherm-omhoog-omlaag-klap schakeling!Dat is toch geweldig!
Voor jullie misschien niet zo spannend, maar voor mij best een big deal :D

Ik weet dus niet van wie het af komt, maar eigenlijk kunnen het er niet veel zijn ;)
Er zijn maar enkele die weten van mijn project die óók mijn adresgegevens hebben, maar wie mag ik bedanken?
Wie heeft de tijd genomen om een printje in elkaar te bakken?
Wie heeft alles aan gesloten op een motortje?
Wie heeft een doos vol sigaren opgerookt om dit projectje als generale repetitie in te bouwen in een sigaren doos?
Wie mag ik heel erg bedanken?
Ik weet het niet, maar dit zijn wel momenten waarvan ik echt een gelukkig gevoel krijg.
Met dit soort gebaren weet je toch gewoon dat er toch nog veel goede en aardige mensen zijn op deze wereld.
En de timing is excellent! Soms heb je wel eens van die dagen dat dingen niet lopen zoals je wil.
Een pakketje als dit, zet dan direct weer alles recht, ik ben oprecht dankbaar voor het gebaar.

Nou, dus eigenlijk mede door het pakketje van mr. anoniem ga ik weer lekker verder met m'n RTI project!

Binnenkort weer meer, en hopelijk ook weer met meer regelmaat

Geen fratsen. Dat scheelt.

Helaas niet.
Hulp is alsnog heeeeeeeel erg welkom haha.
Om de een of andere reden krijgen we het niet stabiel.
Er is inmiddels veel gebeurd in mijn privé situatie waardoor ik er het afgelopen jaar ook niet meer naar omgekeken heb, maar wellicht is deze post wel het zetje in de rug wat ik nodig heb om het weer op te pakken.

Geen fratsen. Dat scheelt.
Thevel

Golden Member

Mede dankzij een ander topic is inmiddels duidelijk waarom de schakelingen met een 4013 bij jou niet goed werken.

De 4013 is verkrijgbaar als CD4013 of HEF4013 waarbij alleen de HEF4013 een Schmitt-trigger clock ingang heeft.
En daar kan het mis gaan, ik heb hier getest met de HEF4013 (waarbij het goed werkt) en als jij een CD4013 gebruikt gaat het mis.

Aha! Bedankt voor de uitleg.
Dat geeft de burger weer moed ;)
Dan ga ik dit topic weer helemaal doorlezen en een winkellijstje maken.
Dit project weer eens nieuw leven inblazen!
Wie weet, komt het na vier jaar toch nog goed haha :D

Geen fratsen. Dat scheelt.

Ik ga het zelfde scherm bouwen...
Dacht dat er al een oplossing was maar helaas.

Ik zal aan de slag gaan met een pic

Wordt vervolgd...

Zou je je project hier willen posten?
Ik zou het heel erg gaaf vinden als dit uiteindelijk toch nog een werkend eindresultaat zou krijgen!

Geen fratsen. Dat scheelt.

Ga ik doen, begin is gemaakt...
Code van pic-basic website gebruikt onder fairuse;)

pic basic code:


'************************************************************************
'*  Name    : VolvoScherm.BAS                                           *
'*  Author  : Pazzje                                                    *
'*  Notice  : Copyright (c) 2019 All Rights Reserved                    *
'*  Date    : 6-4-2019                                                  *
'*  Version : 1.0                                                       *
'*  Notes   : Pic besturing voor Volvo RTI scherm                       *
'************************************************************************


'************************************************************************
'*  Het scherm klapt in of met een druktoets.                           *
'*  Als de spanning wordt uitgeschakeld en dan weer wordt ingeschakeld, *
'*  zal de PIC nog steeds weten of het scherm open of dicht stond,      *
'*  vóórdat de spanning werd uitgeschakeld.                             *
'*  UItgang van scherm PORTA.2 en GND,                                  *
'*  en ingang schakelaar S1, PORTB.0 en GND.                            *
'*  Extra ingang voor Contactslot aan = CS                               *
'************************************************************************


;Algemene instellingen
Device = 16F628A
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
All_Digital TRUE              ;Alle ingangen digitaal
;PortB_Pullups On              ;On-chip pull-up weerstanden actief voor toets 

;Algemene constanten
Symbol AntiDender   = 10      ;mSec: Tegen contactdender

;Logische constanten
Symbol AAN  = 1               ;Niet geinverteerd AAN
Symbol UIT  = 0               ;Niet geinverteerd UIT

;Poortnamen
Symbol RTI  = PORTA.2         ;RTI in- of uitklappen door toetsindruk
Symbol S1   = PORTB.0         ;Poort B.0 heet nu S1 waarmee RTI wordt getoggled
Symbol CS  = PORTB.1          ;Poort B.1 heet nu CON en is status contactslot 

;        76543210
PORTA = %00000000             ;PORTA uitgangen bij opstart een laag niveau
TRISA = %11111011             ;PORTA.2 is een uitgang voor RTI
TRISB = %11111111             ;PORTB allen ingangen

Clear                         ;Wis alle RAM geheugen


;Hoofdprogramma
RTI = ERead 0                 ;Lees EEPROM of de RTI open of dicht was bij stroomuitval 

While 1 = 1                   ;Oneindige lus
  While S1 = UIT : Wend       ;Wacht op een toetsindruk
  DelayMS AntiDender          ;Tegen contactdender bij indrukken van de toets

  RTI = ~RTI                  ;Toggle de RTI
  EWrite 0, [RTI]             ;Schrijf naar EEPROM of de RTI open of dicht is

  While S1 = AAN : Wend       ;Wacht tot toets wordt losgelaten
  DelayMS AntiDender          ;Tegen contactdender bij loslaten van de toets
Wend

End

[Bericht gewijzigd door pazzje op zaterdag 6 april 2019 12:12:19 (99%)