Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal!

Estou com um problema que está me tirando o sono: um cliente me pediu um circuito utilizando um PIC16F628, usando todos os bits do Port B como entrada e os Bits do Port a como saída. Ocorre que as saídas deves ser acionadas em nível alto, mas o Bit 4 não fica em nível alto um a vez que ele tem o dreno aberto. Como fazer esta saída ficar ativa em nível alto? No hardware que o cliente pediu, as saídas acionam um relé e um diodo simultaneamente, sendo que um resistor de pull up teria  utilidade para controlar o transístor em nível baixo. Alguém tem alguma sugestão que não envolva programação?

  • Membro VIP
Postado
19 minutos atrás, Mauro Rudnicki disse:

um resistor de pull up teria  utilidade para controlar o transístor em nível baixo

Engano seu. Controla no alto também. Apenas vai limitar - você no controle - a corrente fornecida.

87aec60eb1afd6ad485634d2d14a06550b3b257c

Pra base de um bc no relé, coloque uns 2k2...3k3.

Não entendi a do diodo... Publique esquema...

Postado

Coloquei o  resistor  de pull up, mas a saída fica ativa permanentemente. Segue esquema de como foi implentado o circuito. Os pinos do Port A que controlam a saída tem o mesmo esquema, apenas o Bit 4 do Port A está dando problema, o resto funciona como um relógio.

circuito.PNG

  • Membro VIP
Postado

Errado1... Não vejo pullup.

Errado2... coloque o led em paralelo com a bobina do relé pra forçar menos a saída do mc. Desculpinha de não poder mexer no layout não cola. E se for isso mesmo, receba um cóqui por não ter testado direito.

 

Alternativa1... ligue o relé em outro port e use este como entrada... nem vem a a desculpinha acima...

Alternativa2...verifique o programa... erro infantil como esquecer de setar o TRISA4 como saída é comum. Outro menos infantil é esquecer de setar o port como IO digital pois ele é compartilhado com o comparador e entrada do timer. E se for isso mesmo, receba um outro cóqui por não ter lido o d.s. direito.

  • Haha 1
Postado

O resistor de pull up não foi incluído, foi apenas o circuito básico. O lay out da placa foi feito a toque de caixa pois o cliente tinha pressa no mesmo, assim como continua tendo. Todos os pinos estão sendo usados, não há pino nenhum sobrando. Os relés estão em outra placa, já que o cliente me enviou a caixa para que a placa fosse feita para ela, motivo pelo qual não coloquei os diodos em paralelo com a bobina do relé. o cliente só me enviou o programa para estar na semana passada, e se eu soubesse onde mexer no programa para ajustar o TRISA4 eu o teria feito, mas não tenho experiência de programação em assembler ou linguagem C. Se fosse em VHDL não teria problema nenhum

  • Membro VIP
Postado
19 minutos atrás, Mauro Rudnicki disse:

não tenho experiência de programação em assembler ou linguagem C

Eu tenho menos ainda kk. Sem problema amigo! Afinal estamos aqui pra te ajudar! Se achar que deve, dê uma olhadinha na seção "comparator module" páginas 61 e 62. Observe o registro CMCON bits CM2,CM1,CM0. A informação é sutil mas eles "nascem" como 0 0 0. Ou seja, logo depois do reset é analógico. Pra ser digital basta você fazer 

CMCON=0b00000111; //ou 0x07

e

TRISA4=0; //ou TRISA=0b00000000; se for usar tudo saída.

Tenta aí e me fala. Se achar que deve/pode, publique o esquema e fonte completos que a gente avalia melhor. Se fonte em assembly, somo pouco quase nada.

 

22 minutos atrás, Mauro Rudnicki disse:

não coloquei os diodos em paralelo com a bobina do relé

isso é hard amigo. Não tem relação direta com seu problema ok?. Mas tem que colocar sim ok?

 

  • Obrigado 1
Postado

Liguei para o cliente, que me falou que o esquema é  de um relé programável, o qual poderá mudar a programação quando necessário. Neste caso a situação complica ainda mais pois isto usará linguagem Ladder para escrever o programa e vai usar um PICKIT2 para gravar o PIC... Neste caso a solução teria que ser via hardware mesmo, mas não sei se será possível por software. Segue esquema e programa experimental que me foi enviado para testar. O cristal está com o valor errado, pois fui informadoque o valor do mesmo será de 20 MHz.

imagem1.PNG

imagem2.PNG

imagem3.PNG

TESTE.txt

Postado

Mordendo a língua: me dei ao trabalho de ler a parte inicial do código. Está em código de máquina puro, para cada config primeiro aparece a carga do valor a ser carregado na memória e depois a transferência do valor para o registro. E ainda faz uso de endereçamento indireto. O que ajuda um pouco é que tem o comentário em menemônico após cada linha de comando. Cruel ler isso daí.

Postado
21 minutos atrás, Sérgio Lembo disse:

Está em código de máquina puro

Ao que se nota, isso foi gerado por uma máquina. Algo como pegar um *.HEX e converter para *.ASM.

 

10 horas atrás, Mauro Rudnicki disse:

Coloquei o  resistor  de pull up, mas a saída fica ativa permanentemente. Segue esquema de como foi implentado o circuito. Os pinos do Port A que controlam a saída tem o mesmo esquema, apenas o Bit 4 do Port A está dando problema, o resto funciona como um relógio.

circuito.PNG

Quanto a esse problema da saída Dreno aberto, é só colocar o PullUp e alterar os resistores do circuito aí em cima.

Use um resistor de PullUp de 2k2 e diminua os valores desses do esquema para 2k2 também.

  • Membro VIP
Postado
13 horas atrás, Mauro Rudnicki disse:

Neste caso a solução teria que ser via hardware mesmo, mas não sei se será possível por software

Em ambos amigo. Se você (ou o projetista) não fizer aquilo que propus, penso que vai tornar sua vida difícil.

 

Percebo agora uma cagadinha do projetista ao não perceber que a saída é O.D. Como já havia previsto, há entradas e este pino era pra ser uma. Um projetista de boa vontade (e humilde) faz a troca com muita facilidade no fonte. E de fato aquele arquivo é oriundo do fonte ladder. Apesar de possível, editar aquilo pra seu propósito é quase desumano. Do meu ponto de vista, mais vale a pena corrigir a ligação e fazer outro programa. Peça o fonte ladder pra ele e recompile. E claro estude o tal LDmicro...

;/* This is auto-generated ASM code from LDmicro. Do not edit this file!
;   Go back to the LDmicro ladder diagram source for changes in the ladder logic. */

 

Postado

O que me resta é falar novamente  com o cliente e expor a situação, já que ele me pediu apenas para fazer uma placa em função da caixa, o que resultou em duas placas, pois não há espaço suficiente para fazer algo como deve ser realmente feito. Só não deu pra fazer algo melhor pois o cliente me enviou o esquema cheio de falhas e queria tudo para ontem.  Baixei um software  que cria programas em Ladder ontem à noite, e a única coisa que é possível mexer é na palavra de controle do oscilador e mais nada. Vamos ver o que o cliente vai me dizer e seja o que Deus quiser.

  • Membro VIP
Postado

Ainda me solidarizando com você, dei uma olhada rápida (e desumana) no "fonte" e também...

11 horas atrás, Sérgio Lembo disse:

Mordendo a língua: me dei ao trabalho de ler a parte

 ... um pouco além da inicial...

 ; Comparator Off. Normal port I/O.
          movlw     0x07                   ; (REG_CMCON, 0x07) ; 0x7
          movwf     0x1F                  ; (REG_CMCON, 0x07) ; 0x1F
    ; Set up the ANSELx registers. 1-analog input, 0-digital I/O.
    ; Set up the TRISx registers (direction). 1-tri-stated (input), 0-output and drive the outputs low to start
          movlw     0x00                   ; (Prog.mcu->outputRegs[i], 0x00) ; 0x0
          movwf     0x05                  ; (Prog.mcu->outputRegs[i], 0x00) ; 0x5
          movlw     0x00                   ; (Prog.mcu->outputRegs[i], 0x00) ; 0x0
          movwf     0x06                  ; (Prog.mcu->outputRegs[i], 0x00) ; 0x6

me parece que a cagadinha foi só mesmo no hw. Assim sendo

1º retire o 4k7 e led e coloque-os em paralelo com bobina. Isso não resolve. Apenas libera o pino contra "males externos" e fica mais elegante.

2º ligue direto do port RA4 até a base (só ele!). Coloque o 4K7 como pullup

3º como está no proteus, faça a simulação. Se o pino não sair do vermelho ou ficar cinza, tem + problema.

4º desabilite o Wdog na hora de programar. Isso também ndv mas só pra desencargo.

5º o mesmo pro bit LVP.. desabilite. Mas atenção!: seu programador deve ter saída 12V no pino de programação!!! Se não você "nunca mais" grava este chip.

6º avalie a possibilidade de este chip estar com defeito

 
 
2 horas atrás, Mauro Rudnicki disse:

queria tudo para ontem

Eu consigo entregar ontem sim desde que me peçam anteontem 🤪

  • Curtir 2
Postado

Liguei para o cliente que me "amaldiçoou" por ter comentado sobre alterar os ports  (Port A como entrada e Port B como saída), dizendo que o projeto é dele e tem que ser do jeito que ele quer. Alegou que estou fazendo corpo mole, afinal ele me mandou o esquema na terça-feira de noite e mandou o programa para teste no sábado à noite, depois que insisti para testar o projeto antes de enviar o lay-out da placa pra ele, embora tive que me ausentar esta semana por três dias devido a alguns problemas particulares. O cliente pediu mais um monte de alterações nas placas o que implicaria em refazer tudo a partir do zero e quer tudo pronto pra amanhã. Achei mais prático largar de mão deste projeto. Peço desculpas a todos por ter tomado o tempo de vocês, mas nem sempre conseguimos agradar a todos

  • Obrigado 1
  • Triste 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...