Frequência?

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Frequência?

Mensagempor bomber-eng » 11 Ago 2008 10:46

Bom dia pessoal, Tudo bom?
Estou precisando gerar uma onda quadrada com as seguintes frequências, não precisa ser exato, mas tem que ser o mais próximo possível:
Frequência(Hz):
0
3,1
6,2
9,4
12,5
15,6
18,7
21,8
25,0
28,1
31,2
34,3
37,4
40,6
43,7
46,8
49,9
53,1
56,2
59,3
62,4
65,5
68,7
71,8
74,9
78,0
81,1
84,3
87,4
90,5
93,6
96,7
99,9
103,0
106,1
109,2
112,3
115,5
118,6
121,7
124,8
127,9
131,1
134,2
137,3
140,4
143,6
146,7
149,8
152,9
156,0
159,2
162,3
165,4
168,5
171,6
174,8
177,9
181,0
184,1
187,2
190,4
193,5
196,6
199,7
202,8
206,0
209,1
212,2
215,3
218,4
221,6
224,7
227,8
230,9
234,1
237,2
240,3
243,4
246,5
249,7
252,8
255,9
259,0
262,1
265,3
268,4
271,5
274,6
277,7
280,9
284,0
287,1
290,2
293,3
296,5
299,6
302,7
305,8
308,9
312,1
315,2
318,3
321,4
324,6
327,7
330,8
333,9
337,0
340,2
343,3
346,4
349,5
352,6
355,8
358,9
362,0
365,1
368,2
371,4
374,5
377,6
380,7
383,8
387,0
390,1
393,2
396,3
399,4
402,6
405,7
408,8
411,9
415,1
418,2
421,3
424,4
427,5
430,7
433,8
436,9
440,0
443,1
446,3
449,4
452,5
455,6
458,7
461,9
465,0
468,1
471,2
474,3
477,5
480,6
483,7
486,8
489,9
493,1
496,2
499,3
502,4
505,6
508,7
511,8
514,9
518,0
521,2
524,3
527,4
530,5
533,6
536,8
539,9
543,0
546,1
549,2
552,4
555,5
558,6
561,7
564,8
568,0
571,1
574,2
577,3
580,4
583,6
586,7
589,8
592,9
596,1
599,2
602,3
605,4
608,5
611,7
614,8
617,9
621,0
624,1
627,3
630,4
633,5
636,6
639,7
642,9
646,0
649,1
652,2
655,3
658,5
661,6
664,7
667,8
670,9
674,1
677,2
680,3
683,4
686,6
689,7
692,8
695,9
699,0
702,2
705,3
708,4
711,5
714,6
717,8
720,9
724,0
727,1
730,2
733,4
736,5
739,6
742,7
745,8
749,0
752,1
755,2
758,3
761,4
764,6
767,7
770,8
773,9
777,1
780,2
783,3
786,4
789,5
792,7
795,8
798,9
802,0
805,1
808,3
811,4
814,5
817,6
820,7
823,9
827,0
830,1
833,2
836,3
839,5
842,6
845,7
848,8
851,9
855,1
858,2
861,3
864,4
867,6
870,7
873,8
876,9
880,0
883,2
886,3
889,4
892,5
895,6
898,8
901,9
905,0
908,1
911,2
914,4
917,5
920,6
923,7
926,8
930,0
933,1
936,2
939,3
942,4
945,6
948,7
951,8
954,9
958,1
961,2
964,3
967,4
970,5
973,7
976,8
979,9
983,0
986,1
989,3
992,4
995,5
998,6
1001,7
1004,9
1008,0
1011,1
1014,2
1017,3
1020,5
1023,6
1026,7
1029,8
1032,9
1036,1
1039,2
1042,3
1045,4
1048,6
1051,7
1054,8
1057,9
1061,0
1064,2
1067,3
1070,4
1073,5
1076,6
1079,8
1082,9
1086,0
1089,1
1092,2
1095,4
1098,5
1101,6
1104,7
1107,8
1111,0
1114,1
1117,2
1120,3
1123,4
1126,6
1129,7
1132,8
1135,9
1139,1
1142,2
1145,3
1148,4
1151,5
1154,7
1157,8
1160,9
1164,0
1167,1
1170,3
1173,4
1176,5
1179,6
1182,7
1185,9
1189,0
1192,1
1195,2
1198,3
1201,5
1204,6
1207,7
1210,8
1213,9
1217,1
1220,2
1223,3
1226,4
1229,5
1232,7
1235,8
1238,9
1242,0
1245,2
1248,3

Na verdade consegui gerar estas frequencias usando o TIMER_0 do PIC18F452, usando um Crital de 10MHz, mas o que acontece, quando aumento as rotinas no porcessador as frequências saem fora daquilo que tinha programado previamente. o Timer não mantém sua precisão.
Estou ficando louco com isso, se alguém souber de alguma forma de como posso melhorar isso, por favor dêm uma forcinha.... Estou tentando gerar uma onda quadrada. Tentei com PWM, mas em baixas frequencias não dá certo......... E a tabela são 401 frequencias difrentes....

Caso alguém tenha alguma sugestão ficarei muito grato mesmo....

Abraços e obrigado.
bomber-eng
Bit
 
Mensagens: 14
Registrado em: 21 Nov 2006 05:36

Mensagempor renatokodaira » 11 Ago 2008 11:05

Talvez seja o caso de voce usar um chip DDS (direct digital synthesis) tipo AD9833 ou tentar fazer isso por software no PIC. Tem um artigo sobre isso na Circuit Cellar desse mês (numero 217).
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Mensagempor Djalma Toledo Rodrigues » 11 Ago 2008 12:21

Aqui você gera a onda quadrada exata, na freq. máxima possível:

Movlw 0FFH
Loop:
xorwf PortX,F

goto Loop


Inserindo um tempo baixa a freq.

Ex.:
Movlw 0FFH
Loop:
xorwf PortX,F
call tempo
goto Loop
Editado pela última vez por Djalma Toledo Rodrigues em 13 Ago 2008 11:11, em um total de 2 vezes.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor msamsoniuk » 11 Ago 2008 12:58

vc nao consegue concatenar dois timers de 16 bits como um unico timer de 32 bits e usar um divisor mais preciso para gerar interrupcoes ?
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor MOR_AL » 12 Ago 2008 01:19

Olá bomber-eng. Tudo bem?
Bom.
1 - Tirando a frequência nula, você teria:

a) para menor frequência de 3,1Hz, o período aproximado de 322.581 us.
b) para a maior frequência de 1248,3Hz, o período aproximado de 841 us.

Programando a geração dos períodos em assembler, você teria mais controle sobre os tempos de chamada e retorno das rotinas. Talvez fosse menos complicado se você dividisse as frequências em grupos. Cada grupo possuiria a chamada a determinadas rotinas de geração de tempos.

2 - Se você fizer um oscilador de onda quadrada com 1MHz e alimentar um divisor programável por N, e em seguida um contador programável de M, talvez você possa resolver o seu problema.
Como contador você poderia usar diversos CD4516 (cmos), como divisor não pesquisei, mas certamente há um da família cmos.
O PIC gerenciaria os pinos de controle dos cmos.
Suas frequências não possuem um período com número inteiro de us, daí a aproximação. Porém as frequências ficariam quase corretas.

2 - Agora. Desculpe a minha curiosidade, mas se possível, eu gostaria de saber qual seria a aplicação que nescessita de tantas e tão precisas frequências. Você já se perguntou se são realmente necessárias?

MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Frequência.....

Mensagempor bomber-eng » 12 Ago 2008 11:07

Caro MOR_AL são necessárias sim... Pois cada frequência desta gerada equivale a 0,1m/min do meu motor de passo, vou trabalhar de 0 a 40m/min de 0,1 em 0,1m/min e esta é a precisão que necessito atualmente. Estou em um mato sem cachorro..... Mas continuo tentando achar alguma solução viável........
Qualquer coisa entre neste link, é isso que estou tentando controlar:

http://www.geckodrive.com/upload/G203V-REV-6-MANUAL.pdf
http://www.geckodrive.com/upload/Step_motor_basics.pdf

Estou tentando fazer as rotinas de controle de velocidade, depois preciso fazer rotinas de rampas de aceleração para o mesmo.
Complicado viu..... Mas vamos lá, uma hora dá certo....

Abraços e obrigado a todos pelas dicas...
bomber-eng
Bit
 
Mensagens: 14
Registrado em: 21 Nov 2006 05:36

Mensagempor Djalma Toledo Rodrigues » 12 Ago 2008 11:23

Oi Mor_al essas freq. certamente correspondem as notas musicais , visto que o La é 440 Hertz.

Oi Bomber-eng veja bem , para maior freq., 1248,3 cps (*), teremos cada meio período da onda quadrada com duração de 400545 nano seg. aproximadamente , ( = 1248.23 cps) * então acredito que um PIC com instrução de 50.0705 micro seg. seja de satisfatório. Certo?

(*) cps e não Hertz porque só onda senoidal tem frequência , não é mesmo ?
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor Djalma Toledo Rodrigues » 12 Ago 2008 11:31

Caracas é motor e não escala musical .
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor msamsoniuk » 12 Ago 2008 12:54

nao vejo pq o timer interno nao poderia suprir isso, mas se vc quer algo melhor e mais inteligente, pode usar um VCO (oscilador controlado por tensao).

os VCOs tipicos permitem vc variar a frequencia linearmente de acordo com a tensao de controle, assim vc pode passar de uma frequencia baixa para uma mais alta e vice-versa de forma linear e sem saltos, simplesmente incrementando ou decrementando a tensao (o que pode ser feito com alta precisao atraves de um DA ligado ao PIC).

para encontrar a frequencia alvo, vc pode montar uma especie de frequencimetro, contando durante um segundo os pulsos. como vc precisa de algo com resolucao de 1/10Hz, o VCO tem que operar a uma frequencia 10x maior, de modo que vc consiga chegar a frequencia alvo em apenas um segundo. se o tempo de resposta para encontrar essa frequencia tem que ser menor, por exemplo, 1/10 de segundo, vc tem entao que ter uma frequencia novamente 10x maior, resultando entao em 100x maior para ter precisao de 1/10Hz em 1/10 de segundo.

soh nao sei se eh simples projetar um VCO capaz de cobrir uma faixa assim grande de frequencias (mais de 400:1).
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor xultz » 12 Ago 2008 12:58

Ah, então você tá fazendo uma bomba infusora, né? Aquela frequência mínima é para o KVO? EU desenvolvi o hardware para uma bomba uma vez, mas o firmware eu contratei um piá para escrever.

Se você acha que isso é complicado, vai arrancar os cabelos para certificar a bomba na Anvisa... isso sim que é um inferno.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor bomber-eng » 12 Ago 2008 14:07

Pessoal, não tem nada a ver com notas musicais, muito menos com bomba de infusão........
Só quero mesmo conseguir variar a velocidade de um motor de passo usando este drive em específico, nada além disso. Tenho a necessidade de usar este drive pois é com este material que trabalhamos.
Mas mesmo assim agradeço todas as dicas.
Na verdade estas frequencias consigo usando o timer 1 do pic e com duty cicle de 50%, mas conforme vou colocando mais rotinas em meu processador estas frequências mudam, diferente do PWM por hardware que fica cravado indiferente do tamnho de meu programa.
bomber-eng
Bit
 
Mensagens: 14
Registrado em: 21 Nov 2006 05:36

Mensagempor renatokodaira » 12 Ago 2008 14:43

Entao, esse chip DDS (AD9833) que eu citei anteriormente tem resolução de 0,1Hz (isso mesmo, a frequencia do sinal pode ser incrementada de 0,1Hz em 0,1Hz) e pode gerar sinais até 12,5MHz. Seu controle é por SPI e uma vez configurado funciona independentemente do PIC que vai controla-lo. Mais importante: tem na Farnell.
A parte chata: ele só tem uma droga de encapsulamento MSOP 10 pinos que é o cúmulo de pequeno (3mm x 3mm).
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Mensagempor Djalma Toledo Rodrigues » 12 Ago 2008 17:16

Mas, se vc esta usando o Timmer 1 por interrupção não entendo porque suas rotinas alteram o mesmo .
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x