Pomoc s úpravou programu pro attiny 13
Moderátor: Moderátoři
Pomoc s úpravou programu pro attiny 13
Funkce je jednoduchá 2 vstupy 3 výstupy
1 vstup je od tlačítka pro externí posuv drátu
2 vstup je od hořáku
Funkce sváření mi funguje jak má.
Při logické 1 od hořáku se sepne výstup pro plyn a udělá 1,5s předfuk plynu, dál se aktivuje výstup pro podavač a stykač trafa. Při logické 0 naběhne jakoby fáze ukončení svařování. Výstup pro podavač se vypne hned, 0,6s na to odpadne signál pro stykač trafa a 1,9s na to odpadne výstup pro plyn (dofuk plynu) To je vše ok. Jediné co tak mi připadá že při změně 0/1 chvilku přemýšlí co bude dělat. Sepnu vstup a 0,5-1s se nic neděje a pak už začne jak má ve správných časech, zrovna tak když vypnu svařování, tak cca 0,5-1s jak když čeká a pak začne už správně v časech ta fáze ukončení svařování. To ě trošku trápí.
Co ale nevím jak udělat je externí posuv. Vstup je jiný, ale výstup stejný. Tak jak mám teď napsaný program tak mi nefunguje ten výstup pb4 pro podavač. Když odstraním jakoby tlačítko ext posuvu, tak to funguje jak má. když ho tam dopíšu tak nejde ani jako externí posuv ani ve svářecí sekvenci.
Nevím zda jsem to napsal alespoň trochu srozumitelně, každopádně v programu to je vše vidět a s popisky. Dokázal by mi někdo pomoci, jen třeba napsat udělej tak, či onak, nebo že by přímo upravil program cokoli...
přikládám ve v balíku, je tam udělané pdf toho programu, tak komplet složka z atmel studia kde je vše.
- Přílohy
-
zení 2.rar- (39.71 KiB) Staženo 288 x
Funkce má být. Pokud je vstup od hořáku v logická 0 nic se neděje. Pokud přepne do 1 tak naběhne fáze svařování. Tj. aktivuje výstup pro plyn, čeká 1,5s a zapne k tomu výstup pro podavač a stykač trafa dále je vše zaplé dokud nepřijde na vstup 0, když přijde ta výstup pro podavač vypne okamžitě pak po O,6s vypne výstup stykače trafa a od toho po 1,9s vypne výstup plynu.
Druhá funkce je jen při například zavádění nového drátu. Takže tlačítko které jde na vstup pošle signál 1 a sepne se výstup pro podavač (stejný jako v sekvenci svařování, při logické 0 ten výstup vypne.
Mě funguje svařovací sekvence pokud do toho nenapíšu podmínku s tlačítkem. Jen mi přijde že při změně stav 0/1 chvilku spí než začne provádět ty operace, jinak sled operací a časů je ok, ale pokud dopíši to tlačítko posuvu, tak mi v svařovací sekvenci neaktivuje výstup pb4 pro ten posuv a neaktivuje mi ho ani když sepnu tlačítko posuvu. Je mi jasné že se tam totiž budou ovlivňovat ty 2logiky vstupu na stejný výstup, ale nevím jak to napsat aby to šlo, nikdy jsem si vlastní program nepsal.
Kód: Vybrat vše
int main(void)
{
char vari_se;
DDRB &= ~ (1<<PB0); // pb0 vstup tlačítko posuv pwm
DDRB &= ~ (1<<PB1); //pb1 vstup spínač hořák
DDRB |= (1<<PB2); // pb2 výstup plyn
DDRB |= (1<<PB3); //pb3 výstup stykač trafo
DDRB |= (1<<PB4); //pb4 výstup pwm podavač
vari_se = 0; // nevari se
while (1)
{
if ((PINB & (1<<PB1)) && !vari_se) // sepnuto tl. a nevari se
{
_delay_ms(20);
if (PINB & (1<<PB1)) // nebyl to zakmit
{
PORTB |= (1<<PB2); // sepnutí výstup pb2 plyn
_delay_ms(1500); // čekání 1,5s
PORTB |= (1<<PB3); // sepnutí pb3 stykač trafo
PORTB |= (1<<PB4); // sepnutí pb4 pwm podavač
vari_se = 1; // vari se
}
}
if (!(PINB & (1<<PB1)) && vari_se) // rozepnuto tl. a vari se
{
_delay_ms(20);
if (!(PINB & (1<<PB1))) // nebyl to zakmit
{
PORTB &= ~ (1<<PB4); // vypnutí pb4 pwm podavač
_delay_ms(600);
PORTB &= ~ (1<<PB3); // vypnutí pb3 stykač trafo
_delay_ms(1900);
PORTB &= ~ (1<<PB2); // vypnutí pb2 plyn
vari_se = 0; // nevari se
}
}
....