logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AVR][Tiny814][C][QTouch] Dziwne zachowanie przycisku do taśmy LED przy odłączonym programatorze

Soberro 18 Wrz 2020 13:01 783 9
REKLAMA
  • #1 18929675
    Soberro
    Poziom 7  
    Witam,
    chciałem zrobić sobie dotykowy przycisk do taśmy LED który bym zamontował za lustrem, żeby nie był widoczny. Zrobiłem płytkę napisałem program i wszystko działa. Mój problem polega na tym, że wszystko działa do momentu gdy mam podłączony układ do programatora. W zasadzie wystarczy, że mam podpięty tylko minus do programatora i wtedy wszystko działa. Gdy odłączę programator zaczynają się dziać dziwne rzeczy po czasie. Dziwne to znaczy wykrywa dotyk pomimo jego braku. Na początku wydawało mi się, że to wina Mosfetu który grzał się dość mocno. Po wymianie na inny płytka się grzeje dużo mniej, lecz problem pozostaje.
    No i tu mnie najbardziej zastanawia to dlaczego gdy mam podłączony minus do programatora to wszystko działa idealnie a jak go odepnę to zaczyna świrować. Płytkę zasilam z zasilacza 12V/5A. Stabilizator na płytce to LD33. Co może być przyczyną tego, że działa dobrze z programatorem, a bez nie? Z góry dziękuję za odpowiedzi. Oczywiście jak potrzeba więcej informacji to napisze wszystko co będzie trzeba.
  • REKLAMA
  • #2 18929774
    sasiadstar
    Poziom 23  
    Podepnij do wyjścia kontrolera pod który masz podłączony dotyk jakiś rezystor o dużej wartości, dobierz eksperymentalnie.
    Dotyk to taka "antena" wyłapująca ładunki i stąd może być takie zachowanie.
  • REKLAMA
  • #3 18930767
    excray
    Poziom 41  
    Brak uziemienia. Źle napisana obsługa dotyku.
  • #4 18934407
    Soberro
    Poziom 7  
    Wartości rezystorów właśnie tak dobierałem. Testowałem działanie przycisku na wartościach od 1k do 200MΩ. Źle napisana obsługa tzn, że ja gdzieś popełniłem błąd? Fakt, płytka nie jest uziemiona, lecz zasilacz jest uziemiony. Czegoś mogłem nie uwzględnić pisząc program? Wrzucić kod?
  • REKLAMA
  • #6 18934535
    Soberro
    Poziom 7  
    
    touch_process();
    	if(measurement_done_touch){
    		measurement_done_touch=0;
    		qt_stat=get_sensor_state(0) & 0x80;
    		//FLASH_0_write_eeprom_byte(0x21,qt_stat);
    		if(qt_stat){
    			LED_qt_on();
    			dotyk=1;
    		}else{
    			if(deb_ok && dotyk){//
    				deb_ok=0;
    				dotyk=0;
    				pwm_change=0;
    				pwm_change_stop=0;
    				if(save==0){			
    					FLASH_0_write_eeprom_byte(0x00,pwm_wyp);
    					save=1;
    					sec=min=0;
    				}
    				if(changed!=1){
    				if(pwm_on && pwm_wyp_off==0){//
    					pwm_on=0;
    					pwm_wyp_off=1;
    					
    					//wygaszanie whilem
    					i=pwm_wyp;
    					while(TCA0.SINGLE.CMP0!=0){
    						if(pwm_on_off_tick>=2){
    							pwm_on_off_tick=0;
    							TCA0.SINGLE.CMP0=i--;
    						}
    					}
    					if(TCA0.SINGLE.CMP0==0)
    					pwm_wyp_off=0;
    					PORTB.OUT&=~0x04;
    				}else if(pwm_on==0 && pwm_wyp_on==0){//
    					pwm_wyp_on=1;
    					pwm_on=1;
    					
    					//wlaczanie whilem
    					j=0;
    					while(TCA0.SINGLE.CMP0!=pwm_wyp){
    						if(pwm_on_off_tick>=2){
    							pwm_on_off_tick=0;
    							TCA0.SINGLE.CMP0=j++;
    						}
    					}
    					if(TCA0.SINGLE.CMP0 == pwm_wyp)
    					pwm_wyp_on=0;
    					min=sec=0;
    					PORTB_OUT|=0x04;
    				}
    			}
    			changed=0;
    			LED_qt_off();
    			if(pwm_on)PORTB.OUT|=0x04;
    			else PORTB.OUT&=~0x04;
    		}
    		}
    		}
    

    Wrzuciłem fragment w którym sprawdzam czy jest dotyk. PWMem steruje jasność, żeby żona mogła przyciemniać lub rozjaśniać te Ledy.

    [AVR][Tiny814][C][QTouch] Dziwne zachowanie przycisku do taśmy LED przy odłączonym programatorze [AVR][Tiny814][C][QTouch] Dziwne zachowanie przycisku do taśmy LED przy odłączonym programatorze
    [AVR][Tiny814][C][QTouch] Dziwne zachowanie przycisku do taśmy LED przy odłączonym programatorze
  • #8 18936160
    bart-projects
    Poziom 29  
    Mam płytki Xplained w tym tę z Attiny817. Na niej przyciski Qtouch nie są jakoś specjalnie "oshieldowane".
    W dołaczonym PDF możesz zobaczyć wzór płytki oraz schemat gdzie widać, że rezystory mają 1K.
    Pod adresem https://start.atmel.com/#examples/ATtiny817XplainedMini możesz ściągnąć cały krótki projekt wykorzystujący oryginalną bibliotekę Qtouch. Całość skompilowała się w kilka sekund a efekt możesz zobaczyć na dołączonym wideo.
    Może coś podejrzysz ;)



  • REKLAMA
  • #9 18936255
    Soberro
    Poziom 7  
    Jeżeli chodzi o samo działanie QT to rozumiem o co w tym chodzi i działa mi to poprawnie. Gdy płytkę mam położoną luzem to w zasadzie działa wszytko dobrze. Problem zaczyna się gdy przyklejam płytkę za lustro. Jest to szkło 4mm co już może powodować gorszą jakość wykrywania dotyku, do tego pleksi 2mm bo nie chciałem żeby było bezpośrednio klejone. Problemem może być(i raczej jest) warstwa jakiegoś aluminium czy coś czym jest pokryte szkło, żeby było lustrem. Właśnie dlatego zdecydowałem się na Shielda, bo na początku zrobiłem bez Shielda to dotyk lustra właściwie gdziekolwiek powodował odczyt dotyku. Ale najbardziej mnie ciekawi fakt, że mimo tych istniejących zakłóceń działa to poprawnie dopóki minus jest podłączony do programatora. Mimo szkła i pleksi działa idealnie czuje każde dotknięcie reagując od razu, a zarazem dotyk poza miejscem na przycisk nie jest odczytywany. Kolega w pierwszej odpowiedzi powiedział, że może to być spowodowane brakiem uziemienia. To mnie zaciekawiło. Jako tako zasilacz jest połączony z uziemieniem. Jak to możliwe, że po odłączeniu minusa od programatora od razu pogarsza się jakość dotyku. I ewentualnie jak temu zaradzić.
REKLAMA