Strujni izvor 0-50A
Moderators: pedja089, stojke369, trax, InTheStillOfTheNight
- _Maniac_
- Pravo uznapredovao :)
- Posts: 487
- Joined: 02-09-2007, 00:12
- Location: Bilje (pokraj Osijeka)
- Contact:
Re: Strujni izvor 0-50A
Evo spojio sam LED-icu i svijetli od MAX do 0 i opet skoci na max ...
A kad spojim ponovno sve po onoj shemi, bez shunta... dobijem ovako...
Pwm normalno radi od 0-1020, a ADC pada od kojih 840 pa do 36 i opet skoci na 840...
Zarulja ne svijetli, na izvodima za zarulju napon je 9.55V... A cim spojim zarulju napon pada na 0 i zato ne svijetli ...
Evo video da radi led-ica...
http://www.youtube.com/watch?v=jHudfeYfKcg
Pa moze savjet sta dalje... jer vidljivo je da pwm radi, ali onda nesto s ovom shemom vjerojatno nevalja... valjda...
http://img260.imageshack.us/img260/20/shemar.jpg
A kad spojim ponovno sve po onoj shemi, bez shunta... dobijem ovako...
Pwm normalno radi od 0-1020, a ADC pada od kojih 840 pa do 36 i opet skoci na 840...
Zarulja ne svijetli, na izvodima za zarulju napon je 9.55V... A cim spojim zarulju napon pada na 0 i zato ne svijetli ...
Evo video da radi led-ica...
http://www.youtube.com/watch?v=jHudfeYfKcg
Pa moze savjet sta dalje... jer vidljivo je da pwm radi, ali onda nesto s ovom shemom vjerojatno nevalja... valjda...
http://img260.imageshack.us/img260/20/shemar.jpg
Capo Di Tutti Capi
Re: Strujni izvor 0-50A
Kako ti adc moze ocitavati nesto a da shunt nije spojen a ni zarulja ne svijetli?
Probaj sa onim logickim mosfetom bez ovog mosfet drajvera sto si pravio. Takodje prebaci mosfet drajver u low side ulaz i izlaz, presjeci na PCB veze i prespoji drugacije, onda spoji mosfet onaj svoj kako si spajao prije po kizinoj shemi.
Probaj sa onim logickim mosfetom bez ovog mosfet drajvera sto si pravio. Takodje prebaci mosfet drajver u low side ulaz i izlaz, presjeci na PCB veze i prespoji drugacije, onda spoji mosfet onaj svoj kako si spajao prije po kizinoj shemi.
- _Maniac_
- Pravo uznapredovao :)
- Posts: 487
- Joined: 02-09-2007, 00:12
- Location: Bilje (pokraj Osijeka)
- Contact:
Re: Strujni izvor 0-50A
ajd mi skiciraj shemu... nekontam sta mislis samo sa logickim mosfetom, to je onas sto si mi poslao RFG70N06???
Capo Di Tutti Capi
Re: Strujni izvor 0-50A
Sta da skiciram, spojis mosfet direktno na izlaz PWM sa atmela i izmedju otpor od 100oma ostalo spojis kako se spajaju mosfeti.
- _Maniac_
- Pravo uznapredovao :)
- Posts: 487
- Joined: 02-09-2007, 00:12
- Location: Bilje (pokraj Osijeka)
- Contact:
Re: Strujni izvor 0-50A
ahaa... znaci nema drivera, nema one diode, kondenzatora od 100mF el i 100nF... Znaci drito ga bubnem na pwm... jel ne bi trebao prije toga staviti bar optocoupler ili nesto... a u biti idem probat
Capo Di Tutti Capi
Re: Strujni izvor 0-50A
Nisi odgovorio kako ti adc ocitava promjenu struje na shantu a zarulja ne svijetli?
- _Maniac_
- Pravo uznapredovao :)
- Posts: 487
- Joined: 02-09-2007, 00:12
- Location: Bilje (pokraj Osijeka)
- Contact:
Re: Strujni izvor 0-50A
a neznam ... ocitava promjenu na adc-u, al nije svijetlilo, jedino se mosfet driver u sekundi pregrije...
evo spojio sam samo onako kako si rekao i svijetli, opet dobivam neki adc, a nista nije spojeno... pa sad do cega to moze biti... nekontam...
http://www.youtube.com/watch?v=vq22djR-gAU" onclick="window.open(this.href);return false;
mozda moguce da se mikrokontroleru sprzio adc, pa halira ili sta vec???
evo spojio sam samo onako kako si rekao i svijetli, opet dobivam neki adc, a nista nije spojeno... pa sad do cega to moze biti... nekontam...
http://www.youtube.com/watch?v=vq22djR-gAU" onclick="window.open(this.href);return false;
mozda moguce da se mikrokontroleru sprzio adc, pa halira ili sta vec???
Capo Di Tutti Capi
Re: Strujni izvor 0-50A
Nesto ti tu nije spojeno dobro, nemoze adc da pokazuje napon kad zarulja ne svijetli a kad svijetli ne pokazuje nista. adc si testirao prije i pokazivao je kad postoji veci napon ocitavao je veci napon a kad je manji napon ocitavao je manji broj.
A ovo sto pokazuje na PWM maximum a zarulja ne svijetli zato sto je PWM setovan u invertovanom modu.
A ovo sto pokazuje na PWM maximum a zarulja ne svijetli zato sto je PWM setovan u invertovanom modu.
Re: Strujni izvor 0-50A
Imas voltmetar pa izmjeri napon na ulazu adc-a ili na shunt otporu da ne meditiramo previse.
Re: Strujni izvor 0-50A
Evo ti kod , provjeri da li sam mozda napravio neku gresku, trebalo bi da kad pritiskas tipke povecava za +1 PWM , poslije treba prepraviti da ako se drzi duze da se povecava korak za koji povecava PWM.
Kako nemam vremena da proucavam datasheet za taj atmel i da ukljucim hardverski tajmer a pod linuksom nemogu da simuliram taj kod da vidim koliko vremena treba da izvrsi x linija koda onda sam izmijeni ovo
ako lcd u jako dugackim vremenskim intervalima osvijezava displej ili u jako kratkim.
if(time>25000)
broj promijeni na 10000 ili 50000 ili vec probaj sam mozes do 60000 ispod recimo 2000-3000 nemoj jer taj atmel treba da je jako brz.
PWM ce u startu biti na pola vrijednosti.
Izbrises test_lcd.c i ovo sve dolje kopiras ponovno i probas kompajlirati.
Kako nemam vremena da proucavam datasheet za taj atmel i da ukljucim hardverski tajmer a pod linuksom nemogu da simuliram taj kod da vidim koliko vremena treba da izvrsi x linija koda onda sam izmijeni ovo
ako lcd u jako dugackim vremenskim intervalima osvijezava displej ili u jako kratkim.
if(time>25000)
broj promijeni na 10000 ili 50000 ili vec probaj sam mozes do 60000 ispod recimo 2000-3000 nemoj jer taj atmel treba da je jako brz.
PWM ce u startu biti na pola vrijednosti.
Izbrises test_lcd.c i ovo sve dolje kopiras ponovno i probas kompajlirati.
Code: Select all
//#define F_CPU 8000000UL
#define SWITCH_SAMPLE 50 // 50ms
#define SwUp() (((PINB&0x02)==0) ? 0 : 1 ) //PB1
#define SwDown() (((PINB&0x01)==0) ? 0 : 1 ) //PB0
#include <stdlib.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include "lcd.h"
#include <util/delay.h>
uint16_t y,ADCvalue,target_current=512;
void ADC_Init(void)
{
// Configure ADC pins (inputs and disabled pull-ups).
DDRB &= ~((1<<PB6)|(1<<PB7));
PORTB &= ~((1<<PB6)|(1<<PB7));
ADMUX = (1<<REFS0) | (1<<REFS1)| (1<<REFS2) | (1<<MUX0) | (1<<MUX3) | (1<<MUX4);
ADCSRA = (1<<ADEN) | (1<<ADSC) | (1<<ADIE) | (1<<ADPS0) | (1<<ADPS1) | (1<<ADPS2) | (1<<ADATE);
ADCSRB = 0;
DIDR0=(1<<AREFD);
DIDR1= (1<<ADC9D) | (1<<ADC8D);
}
void PWM_Start(void)
{
TCCR1A = (1<<COM1B1)|(1<<COM1B0)|(1<<PWM1B);
TCCR1D = (0<<WGM11)|(0<WGM10);
y=1023;
TC1H = (y >> 8);
OCR1C =(unsigned char)y;
// Set PWM port pin to output.
DDRB |= (1<<PB3);
// Enable PLL, use full speed mode.
PLLCSR = (0<<LSM) | (1<<PLLE);
// Now wait for PLL to lock.
do{
}while((PLLCSR & (1<<PLOCK)) == 0);
// Use PLL as clock source.
PLLCSR |= (1<<PCKE);
// CLK PCK = 64MHz / 1 = 64MHz.
TCCR1B |= (0<<CS13)|(0<<CS12)|(1<<CS11)|(0<<CS10);
}
void test_button(void)
{
uint8_t switch_up=0,switch_down=0;
uint16_t t_switch_up=0,t_switch_down=0;
//-------------------------------------------------------------
//Ako ti je stanje prekidaca isto kao i varijabla
if( SwUp() == switch_up){
//resetiras timer
t_switch_up = 0;
}
//inace provjeri\u0161 jeli proslo debounce vrijeme
else if( t_switch_up > SWITCH_SAMPLE ){
//izjednacis varijablu sa novim stanjem
switch_up = SwUp();
//i ponovno resetiras brojac
t_switch_up = 0;
//Ako je tipka stisnuta i izvrsis povecanje target struje
if( !switch_up ){
target_current++;
}
}
//-------------------------------------------------------------
//-------------------------------------------------------------
//Ako ti je stanje prekidaca isto kao i varijabla
if( SwDown() == switch_down){
//resetiras timer
t_switch_down = 0;
}
//inace provjeri\u0161 jeli proslo debounce vrijeme
else if( t_switch_down > SWITCH_SAMPLE ){
//izjednacis varijablu sa novim stanjem
switch_down = SwDown();
//i ponovno resetiras brojac
t_switch_down = 0;
//Ako je tipka stisnuta i izvrsis povecanje target struje
if( !switch_down ){
target_current--;
}
}
//-------------------------------------------------------------
}
int main(void)
{
char buffer[4],buffer1[4];
uint16_t time=0;
ADC_Init();
PWM_Start();
sei();
_delay_ms(500);
/* initialize display, cursor off */
lcd_init(LCD_DISP_ON);
lcd_clrscr();
for (;;) {
time++;
test_button();
if(target_current>1022)
{
target_current=1022;
}
if(target_current<1)
{
target_current=0;
}
TC1H = (target_current >> 8);
OCR1B =(unsigned char)target_current;
if(time>25000)
{
time=0;
/* convert interger into string */
itoa( ADCvalue , buffer, 10);
itoa( target_current , buffer1, 10);
lcd_clrscr();
lcd_gotoxy(0,0);
lcd_puts("ADC=\n");
lcd_gotoxy(4,0);
/* put converted string to display */
lcd_puts(buffer);
lcd_gotoxy(0,1);
lcd_puts("PWM=\n");
/* convert interger into string */
lcd_gotoxy(4,1);
/* put converted string to display */
lcd_puts(buffer1);
}
}
}
ISR(ADC_vect)
{
ADCvalue = ADCW;
}
- _Maniac_
- Pravo uznapredovao :)
- Posts: 487
- Joined: 02-09-2007, 00:12
- Location: Bilje (pokraj Osijeka)
- Contact:
Re: Strujni izvor 0-50A
Otpor na shuntu skoci na cca 50mV i onda ide do 0, pa opet tako...
a napon na adc ide od 140mV do 3, pa opet tako... jasno mi je da nista nije spojeno, pa ne kontam odakle taj napon...
ovako je spojeno, samo tamo gdje ide mosfet na masu stavljen je shunt...
http://img189.imageshack.us/img189/6907/capture1ov.jpg
a napon na adc ide od 140mV do 3, pa opet tako... jasno mi je da nista nije spojeno, pa ne kontam odakle taj napon...
ovako je spojeno, samo tamo gdje ide mosfet na masu stavljen je shunt...
http://img189.imageshack.us/img189/6907/capture1ov.jpg
Capo Di Tutti Capi
Re: Strujni izvor 0-50A
Spoji ADC na shunt, pa javi kako se onda ponaša.
- _Maniac_
- Pravo uznapredovao :)
- Posts: 487
- Joined: 02-09-2007, 00:12
- Location: Bilje (pokraj Osijeka)
- Contact:
Re: Strujni izvor 0-50A
Kad spojim adc na shunt, dobijem da se napon mijenja od kojim 0.5V do 0...
Capo Di Tutti Capi
Re: Strujni izvor 0-50A
adc ne pokazuje decimalne vrijednosti, mislis ocitavas voltmetrom._Maniac_ wrote:Kad spojim adc na shunt, dobijem da se napon mijenja od kojim 0.5V do 0...
Re: Strujni izvor 0-50A
Više bi odgovarao snimak kao onaj prethodni.
Re: Strujni izvor 0-50A
kizo mozda znas odakle napon na adc ako je setovan kao ulaz i pull up otpor je iskljucen
Re: Strujni izvor 0-50A
Baš smo jučer Noćni i ja nešto raspravljali o tome, bilo je raznih ideja, ali nismo smislili ništa pametno. Ovako na daljinu... jedino bacati grah pa vidjeti
Kažem zato neka spoji shunt i sve, pa ćemo vidjeti kako se ADC ponaša.
@Maniac: ako ti nije bed daj video kao maloprije da vidimo vrijednosti ADC-a, mjereni napon nas trenutno ne zanima previše pošto se lako izračuna. Jedino koliki mjeriš referentni napon? Izmjeri na AREF pinu (trebao bi biti oko 2.56V)
Kažem zato neka spoji shunt i sve, pa ćemo vidjeti kako se ADC ponaša.
@Maniac: ako ti nije bed daj video kao maloprije da vidimo vrijednosti ADC-a, mjereni napon nas trenutno ne zanima previše pošto se lako izračuna. Jedino koliki mjeriš referentni napon? Izmjeri na AREF pinu (trebao bi biti oko 2.56V)
- _Maniac_
- Pravo uznapredovao :)
- Posts: 487
- Joined: 02-09-2007, 00:12
- Location: Bilje (pokraj Osijeka)
- Contact:
Re: Strujni izvor 0-50A
evo snimio sam, samo dok to uploada...
samo cudna stvar... znaci kad odem na aref... koji je spojen preko kond na masu... i PWM i ADC se na display-u ne mijenjaju, ali se zarulja pali i gasi... sad je ADC od 1023-0...
u biti sve na snimici, ako nesto treba jos izmjerit, samo recite...
samo cudna stvar... znaci kad odem na aref... koji je spojen preko kond na masu... i PWM i ADC se na display-u ne mijenjaju, ali se zarulja pali i gasi... sad je ADC od 1023-0...
u biti sve na snimici, ako nesto treba jos izmjerit, samo recite...
Capo Di Tutti Capi
- _Maniac_
- Pravo uznapredovao :)
- Posts: 487
- Joined: 02-09-2007, 00:12
- Location: Bilje (pokraj Osijeka)
- Contact:
Re: Strujni izvor 0-50A
Video...
http://www.youtube.com/watch?v=2q9r7Qq4ySQ" onclick="window.open(this.href);return false;
Nadam se da se sve vidi, ako ne, recite sta da ponovno snimim...
http://www.youtube.com/watch?v=2q9r7Qq4ySQ" onclick="window.open(this.href);return false;
Nadam se da se sve vidi, ako ne, recite sta da ponovno snimim...
Capo Di Tutti Capi
Re: Strujni izvor 0-50A
Ovdje na slici je sve u redu najveci sjaj zarulje vrijednost na adc-u vrlo visoka , puno visa nego je bi trebalo.
Ono kasnjenje se moze objasniti da se displej refresuje relativno sporo u odnosu na kako se mijenja pwm i adc, trebalo bi smanjiti vrijeme refresa lcd-a.
Ovakvim spajanjem pipalica na nozice si na najboljem tragu da spalis atmel ili neki izlaz. Spajaj na nozice kondenzatora, otpora ili ulaz na pcb ako je moguce.
Ono kasnjenje se moze objasniti da se displej refresuje relativno sporo u odnosu na kako se mijenja pwm i adc, trebalo bi smanjiti vrijeme refresa lcd-a.
Ovakvim spajanjem pipalica na nozice si na najboljem tragu da spalis atmel ili neki izlaz. Spajaj na nozice kondenzatora, otpora ili ulaz na pcb ako je moguce.