PDA

Επιστροφή στο Forum : Φλασιερα μοτοσυκλετας



cloud_constructor
05-04-19, 14:53
Σου αρεσουν οι ηλεκτρονικες κατασκευες , οδηγεις μηχανη κ δε σου αρεσει να σε πατανε τα αμαξια?
Απο βεβαιη θεση στον χριστιανικο παραδεισο με αυτα που ξεστομιζεις γιατι περνανε στο ενα χιλιοστο απο το τιμονι σου πας κολαση πρωτη θεση καζανι 3?

Σε εμενα επαιζαν αυτα τα προβληματα ιδιως με το Klr250 που ειχα εκει πριν 7 - 8 χρονια (ουτε θυμαμαι ποτε) , πονοκεφαλος απο τα νευρα μιλαμε οποτε αποφασισα να φτιαξω μια φλασιερα που εχει : Φλας (ελα ρε) , αλαρμ και strobe μπας κ με δουν τα μοσχαρια

Η κατασκευη δεν εχει κ πολλα πραγματα , ενα PIC 16f628 . ενα ULN 2003 , κατι κλεμες εκει για να μπουν τα καλωδια και σε ξεχωριστο κουτι (δεν επαιζε κ πολυ χωρος στο Klr250) ενα αλλο κουτακι με το τροφοδοτικο.




http://www.radicalmaker.com/wp-content/uploads/2013/01/flasher_mainboard.jpg

Τα φλασακια ηταν led "ποιοτητος" οποτε εκανα μια σταθεροποιηση στην ταση καρφωμενα στα 12V και αλλα 5V για τον Pic.Οποτε το τροφοδοτικο μπηκε αλλου για να το καβατζωσω κααπου πισω απο το κεντρικο φαναρι. Φυσικα ειχα ενα φοβο για το πως θα συμπεριφερθει ολο αυτο επανω στη μηχανη , μηπως περναει θορυβος στην τροφοδοσια κ κολαει ο pic.. Το ταισα πυκνωτες ε , το ειχα επανω στο μοτορι κανα 2 χρονια ουτε μια φορα δεν κολισε ουτε νερο μεσα τπτ..Σκυλι αταεγο

http://www.radicalmaker.com/wp-content/uploads/2013/01/flasher_psu.jpg

Τον διακοπτη για το τιμονι τον πηρα απο ebay , τοτε δεν υπηρχε τπτ τετοιο εδω (ενω τωρα κατι υπαρχει νομιζω) και οταν τον εκανα bid για 3 νταλλαρζ και τον κερδισα ενιωσα λες κ πετυχα κελεπουρι στο storage warz μιλαμε. Παρολο που δεν ηταν αδιαβροχος (γενικα της πλακας ηταν για να πω την αληθεια) και παααρα πολλες φορες το μηχανακι ειχε γινει σαν jet ski μεσα στη βροχη , την σκονη κτλ παντα λειτουργουσε (φυσικα τον συντιρουσα με σπρευ επαφων οπως ολα τα ηλεκτρικα του Klr)

http://www.radicalmaker.com/wp-content/uploads/2013/01/IMG_20130117_013651.jpg


Το προγραμμα του pic δεν ηταν κ τπτ της nasa , μια μλκιτσα εκει περα να αναβοσβηνουν τα λαμπακια φτιαγμενο σε PICC, οκ. Για τον ελενχο των κουμπιων χρησιμοποιησα μια ετοιμη library που καποιος ειχε φτιαξει (flex_kbd) και γενικα στις περισσοτερες κατασκευες μου ετσι το εκανα γιατι απλα βαριομουν να ψαξω και αυτο μου αρεσε βασικα πως λειτουργουσε.

flasherSystem1.c




#include "16F628A.h"
#use delay(clock=4000000)
#FUSES INTRC_IO
#FUSES NOWDT
#FUSES NOPUT
#FUSES NOPROTECT
#FUSES NOBROWNOUT
#FUSES NOMCLR
#FUSES NOLVP
#FUSES NOCPD


#include "includes/flex_KBD.C"


unsigned int16 count=0;
char k;
int8 action=0,cc,subcnt=0;
int1 state=0,substate=0;


//Flasher speed parameters and option========
#define FLASH_COUNT 5000
#define STROBE_COUNT_LOW 40000
#define STROBE_COUNT_HIGH 2000
#define BUZZER 1
//===========================================




//==================== FLASHING ACTIONS===============
void led_proc(){
if(action==1 || action ==2){ //LEFT, RIGHT and ALARM SIGNAL
while(TRUE){
k=kbd_getc();
//flasher state
if(state==0){//xronos led svismena
if(count<FLASH_COUNT){ state=0; count++; } if(count==FLASH_COUNT) state=1; } if(state==1){//xronos led anamena if(count>0){
state=1;
count--;
}
if(count==0) state=0;
}

//light status
if(state==1){
if(action ==1) output_high(PIN_A2);
if(action ==2) output_high(PIN_A3);
if(action ==3) {//an einai alarm
output_high(PIN_A2);
output_high(PIN_A3);
}
if(BUZZER==1) output_high(PIN_A0);
} else {
if(action ==1) output_low(PIN_A2);
if(action ==2) output_low(PIN_A3);
/* if(action ==3){// an einai alarm
output_low(PIN_A2);
output_low(PIN_A3);
}*/
if(BUZZER==1) output_low(PIN_A0);
}

//escape routine
if(k) {
k="";count=0;action=0;
output_low(PIN_A2);
output_low(PIN_A3);
if(BUZZER==1) output_low(PIN_A0);
break;
}
}
} // end of action

if(action==3){ //LEFT, RIGHT and ALARM SIGNAL
while(TRUE){
k=kbd_getc();
//flasher state
if(state==0){//xronos led svismena
if(count<FLASH_COUNT){ state=0; count++; } if(count==FLASH_COUNT) state=1; } if(state==1){//xronos led anamena if(count>0){
state=1;
count--;
}
if(count==0) state=0;
}

//light status
if(state==1){
output_high(PIN_A2);
output_high(PIN_A3);
if(BUZZER==1) output_high(PIN_A0);
} else {
output_low(PIN_A2);
output_low(PIN_A3);
if(BUZZER==1) output_low(PIN_A0);
}

//escape routine
if(k) {
if(k=='A'){
action=4;
} else {
action=0;
}
k="";count=0;action=4;
output_low(PIN_A2);
output_low(PIN_A3);
if(BUZZER==1) output_low(PIN_A0);
break;
}
}
} // end of action


if(action==4){ //STROBE
while(TRUE){
k=kbd_getc();
//flasher state
if(state==0){//xronos leds svismena
if(count<STROBE_COUNT_LOW){ state=0; count++; } if(count==STROBE_COUNT_LOW) state=1; } if(state==1){//xronos leds anamena if(count>0){
state=1;
count=count-STROBE_COUNT_HIGH;//xronos anamatos
}
if(count==0) state=0;

}

//light status
if(state==1){
output_toggle(PIN_A2);
output_toggle(PIN_A3);
delay_ms(70);
} else {
output_low(PIN_A2);
output_low(PIN_A3);
}

//escape routine
if(k) {
k="";action=0;state=0;count=0;
output_low(PIN_A2);
output_low(PIN_A3);
break;
}

//delay_us(50);
}
} // end of action

}


void startup(){
delay_ms(500);
output_high(PIN_A2);
output_high(PIN_A3);
if(BUZZER==1) output_high(PIN_A0);
delay_ms(150);
output_low(PIN_A2);
output_low(PIN_A3);
if(BUZZER==1) output_low(PIN_A0);
delay_ms(180);
output_high(PIN_A2);
output_high(PIN_A3);
if(BUZZER==1) output_high(PIN_A0);
delay_ms(150);
output_low(PIN_A2);
output_low(PIN_A3);
if(BUZZER==1) output_low(PIN_A0);

kbd_init();
}
//================================================== ==================
void main(){
startup();


while(TRUE){
k=kbd_getc();
if(k=='L') action=1;
if(k=='R') action=2;
if(k=='A') action=3;

//if(k=='S') action=4;
led_proc();
}
}




/includes/flex_KBD.c (taken from the PICC forum)




///////////////////////////////////////////////////////////////////////////
//// Flex_KBD.C ////
//// Generic keypad scan driver ////
//// ////
//// kbd_init() Must be called before any other function. ////
//// ////
//// c = kbd_getc(c) Will return a key value if pressed or /0 if not ////
//// This function should be called frequently so as ////
//// not to miss a key press. ////
//// ////
///////////////////////////////////////////////////////////////////////////






//Keypad connection:


#define col0 PIN_B1
#define col1 PIN_B2
#define col2 PIN_B3
#define row0 PIN_B4
#define row1 PIN_B5
#define row2 PIN_B0
#define row3 PIN_B7


// Keypad layout:
char const KEYS[4][3] = {{'L','A','S'},
{'R','5','6'},
{'7','8','9'},
{'*','0','#'}};


#define KBD_DEBOUNCE_FACTOR 20 // Set this number to apx n/333 where
// n is the number of times you expect
// to call kbd_getc each second






void kbd_init() {
}




short int ALL_ROWS (void)
{
if (input (row0) & input (row1) & input (row2) & input (row3))
return (0);
else
return (1);
}






char kbd_getc( ) {
static byte kbd_call_count;
static short int kbd_down;
static char last_key;
static byte col;


byte kchar;
byte row;


kchar='\0';
if(++kbd_call_count>KBD_DEBOUNCE_FACTOR) {
switch (col) {
case 0 : output_low(col0);
output_high(col1);
output_high(col2);
break;
case 1 : output_high(col0);
output_low(col1);
output_high(col2);
break;
case 2 : output_high(col0);
output_high(col1);
output_low(col2);
break;
}


if(kbd_down) {
if(!ALL_ROWS()) {
kbd_down=false;
kchar=last_key;
last_key='\0';
}
} else {
if(ALL_ROWS()) {
if(!input (row0))
row=0;
else if(!input (row1))
row=1;
else if(!input (row2))
row=2;
else if(!input (row3))
row=3;
last_key =KEYS[row][col];
kbd_down = true;
} else {
++col;
if(col==3)
col=0;
}
}
kbd_call_count=0;
}
return(kchar);
}








Οριστε και ενα βιντεο - νανουρισμα απο βαρεμαρα που δειχνει οτι λειτουργει


https://www.youtube.com/watch?v=T4u1-NYZBxw

Χαβ φανς!!!



Επισης υπαρχουν και τα source files εδω (http://www.radicalmaker.com/projects/pic_projects/motorcycle-turn-signal-flasher-and-alarm/#more-396) (αν υπαρχει προβλημα admins πειτε μου να τα μεταφερω εδω αργοτερα)

Gaou
05-04-19, 14:59
ωραίος ρε φιλε . πολύ ωραίος.


...μπας κ με δουν τα μοσχαρια

9/10 μοσχάρια πλεοον κοιτάνε το κινητό τους. οποτε μαλλον δυσκολα τα πράγματα.


το klr δεν ειχε φλάς ?

cloud_constructor
05-04-19, 15:03
Ειχε αλλα τι γινεται , καμια φορα λογω της θεσης που ειχαν τα λαμπακια στα οργανα το ξεχναγα ανοιχτο κ μου την εσπαγε οποτε προσθαισα και buzzer οταν εβαζες αλαρμ η φλας μπας κ νιωσω κ τα κλεισω , οποτε λεω οκ αφου μπηκα στην διαδικασια ας κανω μια ολοκληρωμενη αλλαγη

Μετα επαιζαν ολα , λαμπακια ενδειξης κτλ . Επισης ειχα προσθεσει οταν ξεκιναει ο pic να κανει κ ενα "μπιμ μπιπ" σαν συναγερμος , ετσι για το ψαρωμα (αν κ αμα εβλεπες πως ηταν το μηχανακι ολο ενα μαυρο πραγμα με την μπαντανοβουρτσα δεν υπηρχε κινδυνος να το κλεψουν χαχα)