Ir ao conteúdo
  • Cadastre-se

aender

Membro Pleno
  • Posts

    177
  • Cadastrado em

  • Última visita

posts postados por aender

  1. 18 minutos atrás, Midori disse:

    Quando se refere a "determinado parâmetro" é o texto completo do assunto? Ou uma parte dele? Se for só o texto crie em outra aba as relações entre assunto e código. Aí é só aplicar a fórmula PROCV nessa que vai buscar os códigos de acordo com o valor do que é digitado na coluna do assunto.

     

     

    O parâmetro  a ser preenchido na coluna Assunto será uma string, um nome curto de no máximo uns 20 caracteres, provavelmente serão apenas uns 5 nomes pré-definidos. Quando o usuário digitar e preencher uma célula da coluna Assunto com qualquer desses nomes, de acordo com o nome encontrado, na mesma linha as células das colunas  Código 1 e código 2 serão preenchidas de forma automática também com outra string.

     

    Em suma é isso, se for encontrado um valor (string) x na célula da coluna assunto, na mesma linha,  preencher as células das colunas Código 1 e código 2 com valores y e z. Esses valores eu também terei que definir. 

    Então é isso, vou dar uma estudada na fórmula PROCV, e qualquer coisa volto aqui. Mais uma vez obrigado e grande abraço. Valeu mesmo. 

  2. 16 horas atrás, Midori disse:

    Isso não é formatação. O que quer fazer é preencher as colunas seguintes automaticamente. É possível fazer literalmente como comentou, mas qual é o critério para as outras linhas? Entendo que queira automatizar isso. Tem algum critério ou base de dados com a relação entre o assunto e o código? Se não tiver terá que criar manualmente para depois buscar com alguma fórmula como PROCV ou macro.

    Primeiramente, muito obrigado pela ajuda. Então, o objetivo é realmente automatizar, mas não se trata de formatação necessariamente. Não tem uma base de dados, eu mesmo teria que criar essa condição na coluna ASSUNTO para o preenchimento das células das colunas  código 1 e código 2, através de uma fórmula, estrutura condicional ou outra estratégia.

    Essa estrutura condicional valeria para qualquer célula da coluna ASSUNTO, tipo, enquanto o usuário preencher célula após célula da coluna ASSUNTO, se for encontrado determinado parâmetro na célula, na mesma linha as células das colunas código 1 e código 2 serão preenchidas com um parâmetro que irei definir. 

     

    As células da coluna ASSUNTO serão preenchidas pelo próprio usuário na hora, uma pós uma, e na mesma linha as células das colunas código 1 e código 2 serão preenchidas de forma automática de acordo com o parâmetro encontrado na célula da coluna ASSUNTO, esse valores para preenchimento das colunas código 1 e código 2  também terão que ser pré-definidos.  Enfim, a lógica parece simples, mas não sei qual estratégia, ferramenta usar para resolver. 

  3. Boa tarde pessoal. Gostaria de uma ajudinha dos mais experiente para resolver um problema em relação a formatação condicional no Excel.

    Seguinte, preciso preencher várias células de uma coluna sucessivamente, de acordo com um parâmetro ( no Caso uma String) que for digitado pelo usuário em cada célula de uma outra coluna. Eu tenho uma coluna que chama NOME DO ASSUNTO, o que eu preciso fazer é preencher as demais colunas ( CÓDIGO 1 e CÓDIGO 2) célula após célula, de acordo com o Parâmetro que for digitado na célula NOME DO ASSUNTO pelo usuário

     

    Segue um exemplo simples da lógica:  Se o usuário digitar  na coluna NOME DO ASSUNTO o parâmetro Esporte, preencher de forma automática na mesma linha, as células das colunas CÓDIGO 1 e CÓDIGO 2 com os parâmetros x e y. Da mesma forma, seguindo a próxima célula da coluna NOME DO ASSUNTO, se o usuário digitar outro parâmetro que irei definir, como a String Filme, na mesma linha preencher a células seguintes das duas colunas com os parâmetros w e k, e assim por diante para a próxima célula da coluna  NOME DO ASSUNTO. 
     tabela.jpg.85ca20b33d2c5566e5aedbbc7a33f2e4.jpg

     

    A lógica eu até entendi, mas não sei como implementar . Se parâmetro digitado pelo usuário na célula da coluna NOME DO ASSUNTO = Condição tal, Prencher na mesma linha as células das colunas CÓDIGO 1 e CÓDIGO 2 com parâmetros  x y z w k etc. 

     

    Não sei se é possível fazer isso, mas se for possível, se vocês puderem me indicar até um tutorial, já ajuda bastante.

    Desde já agradeço a todos. 

    Abraço

  4. Em 04/04/2021 às 19:16, mauro_b disse:

    A estrutura  'dados_aluno' é uma abstração [concepção da inteligência] de aluno no sistema, logo uma variável dessa chamada por RG ou NOME não tem sentido, e sabemos que esses nomes são elementos [ou campos] do tipo abstrato de dados em questão. Tudo torna essa escolha inadequada e desperdício de memória porque objetivou um campo da estrutura.

     

    Corrigido

    
    #include<stdio.h>
    
    //Criaçao do  Registro (Struct) para armazenar os dados do aluno: Nome do Aluno e identificador RG
    
    struct Dados_Aluno { //Nome da Estrutura 
       char  nome [20];   //Variável char que armazena o nome do aluno
       int   identificacao; // variavel int que armazena o RR do aluno
    
    };
    
    //Programa Principal
     int main(void) {
        struct Dados_Aluno  aluno;  //Varável do tipo [abstrato] dados_aluno
        struct Dados_Aluno  *ponteiro; //Ponteiro para a Struct  dados_aluno
    
    
        printf("Digite o nome do Aluno:  ");
        fgets(aluno.nome, 40, stdin); //Leitura do nome do Aluno
       
        printf("Digite o RG  do Aluno:  ");
        scanf("%d", &aluno.identificacao); //Leitura do RG do Aluno
    
        ponteiro = &aluno; //Atribui o valor lido do teclado Da variável RG ao ponteiro
    
        printf("-------------------------------------------\n");
        printf("Nome do Aluno: %s", aluno.nome); //Imprime o nome do Aluno
        printf("RG do Aluno: %d\n ", aluno.identificacao); //Imprime o Rg do aluno
        printf("-------------------------------------------\n");
        printf("Ponteiro = %s", ponteiro); //Imprime o valor armazenado no ponteiro
    
        return 0;
    }

     

    O ponteiro [O endereço] de um tipo abstrato de dados é o endereço do primeiro campo dessa estrutura, e sabemos que nesse caso é a 'string' nome e não rg/identificacao

    @mauro_b  Isso mesmo, eu estava cometendo uma confusão grande aqui rsrs, e consegui entender com sua explicação. Obrigado também por corrigir o código, compilei e ficou certinho. Muito obrigado mesmo pela disponibilidade em ajudar. Grande abraço. 

  5. Bom dia Pessoal. Estou com uma dúvida  sobre ponteiros para Struct.

    Criei uma Struct e um ponteiro para essa struct, e preciso armazenar um dado inteiro digitado pelo usuário em uma variável também desse tipo struct , depois copiar o valor digitado para o ponteiro, e  imprimir esse valor. Mas quando tento imprimir o ponteiro com o resultado, só é retornado  o endereço, ou lixo, não o valor.  

    #include<stdio.h>
    
    //Criaçao do  Registro (Struct) para armazenar os dados do aluno: Nome do Aluno e identificador RG
    
     typedef  struct
        {
            char nome_aluno[20];   //Variável char que armazena o nome do aluno
            int id_aluno;         // variavel int que armazena o RR do aluno
    
        }dados_aluno; //Nome da Estrutura
    
    //Programa Principal
     int main(void)
    {
        dados_aluno nome;  //Varável do tipo dados_aluno
        dados_aluno RG;    //Variável do tipo dados_aluno
        dados_aluno *ponteiro; //Ponteiro para a Struct dados_aluno
    
    
        printf("Digite o nome do Aluno:  ");
        fgets(nome.nome_aluno,40,stdin); //Leitura do nome do Aluno
        printf("Digite o RG  do Aluno:  ");
        scanf("%d",&RG.id_aluno); //Leitura do RG do Aluno
    
        ponteiro = &RG.id_aluno; //Atribui o valor lido do teclado Da variável RG ao ponteiro
    
        printf("-------------------------------------------\n");
        printf("Nome do Aluno: %s",nome.nome_aluno);            //Imprime o nome do Aluno
        printf("RG do Aluno: %d\n ",RG.id_aluno);               //Imprime o Rg do aluno
        printf("-------------------------------------------\n");
        printf("Ponteiro = %d",*ponteiro);                    //Imprime o valor armazenado no ponteiro
    
        return 0;
    }

     

    Exemplo de Saída do Programa :

     

     

    Digite o nome do Aluno:  Marcelo silva
    Digite o RG  do Aluno:  23456789
    -------------------------------------------
    Nome do Aluno: Marcelo silva
    RG do Aluno: 23456789
     -------------------------------------------
    Ponteiro = 6422000 // Não retorna o valor copiado da variável RG
    Process returned 0 (0x0)   execution time : 27.095 s
    Press any key to continue.


    Pessoal, desde já agradeço pela ajuda.

     

  6. Bom dia pessoal.

     

    Seguinte, estou criando um formulário  HTML em formato de tabela, esse formulário  será preenchido pelo cliente, o usuário vai escrever o texto dentro da célula e o cursor deverá passar automaticamente para a próxima linha quando um tamanho pré definido da coluna (largura) for atingido. O problema é que quando o usuário escreve,  o texto vai seguindo em frente, alterando a largura das colunas  e desconfigurando a tabela .Bom, eu teria que fixar o tamanho das colunas, assim o usuário vai digitando dentro da célula e quando a coluna atingir um tamanho pré-definido o cursor vai pular para a próxima linha para que o usuário possa continuar a digitação, preservando assim a estrutura da tabela. Tabela.jpg.f53b234a947d9fece66befb1b63c79d1.jpg

     

    Alguém sabe como resolver esse problema ?
    Desde já, agradeço pela ajuda. 

     

  7. 35 minutos atrás, skyline.soares disse:

    qual formato hd, ntfs ou fat32 ou raw?

    Boa tarde amigo, é NTFS. Valeu. 

    adicionado 26 minutos depois

     

    adicionado 27 minutos depois

    Problema resolvido, dei um Reset no BIOS e o sistema reconheceu a partição que tinha sido excluída como não alocada. Problema bem estranho mas resolvi. 

  8. Boa tarde pessoal. Seguinte,  fui formatar meu PC e excluí uma partição , só que essa partição simplesmente sumiu do HD, não aparece nem mesmo como espaço não alocado. Geralmente eu  excluo todas as partições até ficar um ´bloco único com o tamanho total do HD, e depois vou dividindo e recriando novamente,  unidade C, D, E etc , mas dessa vez exclui uma partição e  sumiu como se eu tivesse deletado aquele espaço do HD. d Formatei normalmente com a partição que sobrou e quando acesso o gerenciamento de disco a partição excluída também não aparece nem como espaço não alocado, o HD tinha 500 Gb , mas só aparece os 150 da partição que sobrou. Se alguém souber que problema maluco é esse e puder ajudar agradeço . 
    Valeu galera. 

  9. Em 22/07/2017 às 10:50, andre ivo vieira disse:

     

    parabéns, ficou incrível o seu projeto 

    Obrigado brother, deu um pouco de trabalho mas ficou super massa. Simulei o projeto no Proteus e funcionou perfeito, falta agora só fazer o circuito , mas como na simulação foi ok, não vou ter grandes problemas.

     

    Gostaria de aproveitar o comentário e agradecer a todos os  amigos que postaram nesse tópico, cada um ajudando com algum tipo de informação.

    Valeu galera do Clube do Hardware, show de bola.

  10. Em 14/07/2017 às 19:51, andre ivo vieira disse:

    Você. Nem postou o resultaso final se você conseguiu, poste para os membros do Clube do Hardware vou

    beleza amigo ?

    O resultado final foi a montagem de um circuito que controla 4 motores via PWM, o circuito poderia ser usado para um braço robótico por exemplo.Criei o circuito no Proteus e ficou assim :

     

    circuito_braço_robotico.jpg

    O programa foi feito no compilador CCS pois o mikroC não possui biblioteca para manipulação do PIC que eu usei, 18F4331 .

    O código fonte  foi esse :

    
    #include<18F4331.h>
    #fuses  NOWDT, NOPROTECT, NOBROWNOUT, PUT, NOLVP
    #use delay(clock=80000000)
    
    #define POWER_PWM_PERIOD 1999  // 1 KHz pwm freq with 8 MHz osc.
    
    
    //=======Funções para gerar PWM nos Motores e Controlar o Sentido DOS ===============
    //........................Motor1......................................
    void Motor1_Sentido1 ()
    {
       set_power_pwm0_duty((int16)((POWER_PWM_PERIOD *4) * .60));  //Valor do Dutycicle  60%   
       output_high (pin_c0);  //Coloca Pino c0 em nível lógico alto
       output_low  (pin_c1);  //Coloca Pino c1 em nível lógico baixo
    }
    void Motor1_Sentido2 ()
    {
       set_power_pwm0_duty((int16)((POWER_PWM_PERIOD *4) * .60)); // 60%
       output_low  (pin_c0);  //Coloca Pino c0 em nível lógico baixo
       output_high (pin_c1);  //Coloca Pino c1 em nível lógico alto
    }
    
    //........................Motor2......................................
    void Motor2_Sentido1 ()
    {
       set_power_pwm2_duty((int16)((POWER_PWM_PERIOD *4) * .40)); // 40%
       output_high (pin_c2);  //Coloca Pino c2 em nível lógico alto
       output_low  (pin_c3);  //Coloca Pino c3 em nível lógico baixo
    }
    void Motor2_Sentido2 ()
    {
       set_power_pwm2_duty((int16)((POWER_PWM_PERIOD *4) * .40)); // 40%
       output_low  (pin_c2);  //Coloca Pino c2 em nível lógico baixo
       output_high (pin_c3);  //Coloca Pino c3 em nível lógico alto
    }
    
    //........................Motor3......................................
    void Motor3_Sentido1 ()
    {
       set_power_pwm4_duty((int16)((POWER_PWM_PERIOD *4) * .40)); // 40%
       output_high (pin_d0);  //Coloca Pino d0 em nível lógico alto
       output_low  (pin_d1);  //Coloca Pino c1 em nível lógico baixo
    }
    
    void Motor3_Sentido2 ()
    {
       set_power_pwm4_duty((int16)((POWER_PWM_PERIOD *4) * .40)); // 40%
       output_low  (pin_d0);  //Coloca Pino d0 em nível lógico alto
       output_high (pin_d1);  //Coloca Pino c1 em nível lógico baixo
    }
    
    
    //........................Motor4......................................
    void Motor4_Sentido1 ()
    {
       set_power_pwm6_duty((int16)((POWER_PWM_PERIOD *4) * .40)); // 40%
       output_high (pin_d2);  //Coloca Pino d2 em nível lógico alto
       output_low  (pin_d3);  //Coloca Pino d3 em nível lógico baixo
    }
    
    void Motor4_Sentido2 ()
    {
       set_power_pwm6_duty((int16)((POWER_PWM_PERIOD *4) * .40)); // 40%
       output_low   (pin_d2);  //Coloca Pino d2 em nível lógico alto
       output_high  (pin_d3);  //Coloca Pino d3 em nível lógico baixo
    }
    
    void parar_motor()
    {
       output_high  (pin_c0);
       output_high  (pin_c1);
    }
    
    //====================Fim das funcoes de controle dos motores===================
    
    //======================Programa Principal======================================
    void main()
    {
    
    
    // ConfigurA  4 Power PWM Canais ordinários.
    setup_power_pwm_pins(PWM_ODD_ON, PWM_ODD_ON, PWM_ODD_ON, PWM_ODD_ON);
    
    // Mode = Free Run
    // Postscale = 1   (1-16) Timebase output postscaler
    // TimeBase = 0   (0-65355) Initial value of PWM Timebase
    // Period = 2000  (0-4095) Max value of PWM TimeBase
    // Compare = 0     (Timebase value for special event trigger)
    // Compare Postscale = 1 (Postscaler for Compare value)
    // Dead Time
    
    setup_power_pwm(PWM_FREE_RUN, 1, 0, POWER_PWM_PERIOD, 0, 1,0);
          
          //Executa uma Rotina Estabelecida: sequencia de movimento dos motores
          while (TRUE)
          {
                  delay_ms(50); //Aguarda 300 Milisegundos
                  Motor1_Sentido1();
                  Motor2_Sentido1();
                  Motor3_Sentido1();
                  Motor4_sentido1();
                  delay_ms(100); //Motor gira nesse sentido por 100 Milisegundos
                  parar_motor(); //Parar o motor por 500 Milisegundos
                  delay_ms(200);
                  Motor1_Sentido2();
                  delay_ms(500);
          }      
    
    } //Fim do Programa Principal
    
     
    
    

     

    • Curtir 1
  11. Bom dia pessoal .

    Seguinte, meu roteador está ligado a um switch , sendo que o técnico configurou esse switch com IP estático, ele fez uma configuração no meu roteador e estava funcionando ok  mas necessitei resetar o roteador e as configurações foram perdidas .

    A proprietária do apartamento me passou um IP fixo e disse que era suficiente  mas nas configurações de IP fixo do roteador pede Gateway, Máscara de sub-rede, DNS primário e secundário .

     

    Quando o técnico configurou meu roteador, parece que ele usou o endereço MAC do roteador  para fazer uma espécie de filtro  no Switch , de modo que mesmo ligando o PC diretamente no cabo a internet não funciona , ela só funciona com o roteador lidado e configurado com esse IP.

    Se alguém souber como configurar e puder me ajudar, agradeço desde já.

    O roteador é um Tp-link 300Mbps TL-WR841N

    Att.

    OBS:   O IP fixo não é da provedora de internet e sim uma especie de configuração que o técnico fez  entre o Switch e o Roteador, já que são vários usuários .

     

     

  12. 31 minutos atrás, Rodrigo_Sobrinho disse:

    Depende de como essa rede distribuída está conectada aos routers individuais... Se for pela porta WAN devidamente configurada não tem erro mas se for pela porta LAN e pelo menos um dos routers dos apartamentos tiver com o DHCP ativado pode derrubar a internet sim...

    Valeu pela ajuda brother. Então é isso mesmo, o técnico havia falado a mesma coisa que você disse , sobre a porta WAN e LAN e que a configuração errada dessas portas poderia causar a queda da conexão de forma geral . Vou falar com o técnico para conferir individualmente a configuração de cada roteador .Eu realmente não sabia disso , achei que o roteador estivesse sendo sobrecarregado demais com as requisições .

    Então é isso, problema resolvido .

    Muito obrigado pela ajuda, grande abraço.:thumbsup:

    • Curtir 1
  13. Bom dia pessoal. Moro em um condomínio onde uma conexão de 20Mb é distribuída entre os moradores.A infraestrutura de rede é composta por um roteador central ligado ao modem de internet e dois switches que distribuem a internet aos moradores.

    Recentemente, a internet tem caído constantemente e só volta quando o roteador central é reiniciado. Um técnico veio ao condomínio e disse que a configuração dos roteadores individuais de cada apartamento pode estar interferindo na rede a fazendo o roteador central cair, entretanto, nunca ouvi falar que esses roteadores individuais interferem em toda a rede, para mim, o roteador central e o Switch devem estar sobrecarregados pelas requisições visto que são 20 apartamentos mais as conexões de Smartphones , esse equipamentos sofrem um excesso de requisições e a internet cai , só voltando depois de reiniciar o roteador.

    Gostaria de saber se essa informação procede ou se realmente as configurações individuais de  cada  roteador  podem interferir nisso.

    Desde já agradeço a todos.

  14. Esse tema é muito polêmico realmente .Eu acho o seguinte , existem outras formas de captar renda sem forçar a barra, acho que a internet deve ser um lugar livre. 

    Não sou tão ativo no site, mas vou arriscar dar um palpite.

    Acho muito interessante o esquema que usam no Cifraclub, eles apresentam propagandas mas é algo que não incomoda,  não é aquela propaganda que aparece quase saltando da tela,   e que enche o saco quando você vai participar em algum fórum do site por exemplo.Propagandas desse tipo provocam um efeito contrário, afastando o usuário do site  e consequentemente diminuindo o número de acessos ao mesmo.


    AdBlock hoje, AdBlock amanhã, AdBlock pra sempre! E até o fim dos tempos!

     

    Se pensam que vão entupir o nosso c* de propaganda estão enganados (não to falando do Clube do Hardware, mas sim da internet em geral).

     

    Mas não se preocupe, vou desativar o AdBlock aqui pro CdH.

    Também penso mais ou menos assim. Essas empresas estão forçando a barra mesmo, parece que eles querem transformar a rede em um lugar  parecido com o que é hoje a televisão , pura forçação de barra e conteúdo inútil.

  15. Usei o Chrome por muito tempo ,  mas mudei depois que o browser começou a apresentar problemas de inicialização. O programa simplesmente não iniciava com os cliques , um processo era carregado mas o browser não era exibido de forma nenhuma, só depois de uns 5 minutos ele aparecida mas aí eu já estava navegando pelo Firefox .

    Tentei de tudo mas não consegui resolver, no youtube existem até vídeos sobre esse problema mas acho um absurdo  que a própria Google não demonstre interesse em resolver um problema tão grotesco como esse.

    Até agora o Firefox não tem apresentado problemas nesse sentido e tem me agradado bastante nos outros quesitos.

  16. eu só tenho o nome e número de telefone dos contatos na minha agenda do celular, não tenho endereço de email.

    Então o programa do vídeo que eu falei pode resolver seu problema.Só nunca usei, mas assitindo o vídeo você vai entender tranquilo.

    Se o software for pago talvez você  encontre a versão  de algum programa gratuito na internet.

  17. Cara, esses problemas te tela azul são um saco mesmo .Bom ,se você já pesquisou e viu que o problema pode ser a memória, para confirmar ,use o MemTest http://www.memtest86.com/.

    Se não estou enganado você deve gravar o software em um CD, entrar no setup e dar o boot por esse CD, feito isso ele vai escanar seus módulos de memória e procurar por erros. Se o software confirmar que os erros são na memória você deve abrir o PC ,retirar  módulo por módulo  e ir testando novamente com o  MemTest para saber qual módulo é o problemático.

    Outra sugestão é tentar limpar os módulos de memória com uma borracha, pode ser que o problema seja mal contato.

    Abraço.

  18. Tudo bem amigo ? Existem alguns programas na internet que enviam mensagens em massa para celulares, eu particuralarmente nunca usei nenhum, mas de acordo com o que você falou no comentário, o software descrito no vídeo que vou deixar abaixo pode resolver seu problema .

    Se não estou enganado ele é pago, mas acho que se você pesquisar bem deve encontrar softwres gratuitos que fazem isso.

    Agora se essas mensagens forem enviadas por e-mail você pode usar o MailChimp:  http://mailchimp.com/monkey-rewards/?utm_source=freemium_newsletter&utm_medium=email&utm_campaign=monkey_rewards&aid=f9ddfa37f806af3e26b470ddb&afl=1 .

    Daí você cria um modelo de e-mail Marketing e dispara de uma vez só para seus contatos de e-mail.

    Abraço.

  19. Opa, bom que tenha gostado do resultado.

    Do jeito que você quer, funciona sim perfeitamente. Podemos utilizar apenas 2 botões:

    você deve estipular um valor para o duty_cicle. Nesse exemplo que passo agora ele recebe 125 ou 50%.

    Se apertar o botão de ENABLE, ele ativa o chip, o motor começa a girar para um lado na velocidade programada. Se apertar de novo, ele pára o chip.

    O outro botão, inverte a rotação para o outro lado na velocidade desejada.

    Dessa forma o código pode se tornar bem mais simples utilizando as interrupções.

    Circuito:

    UrB8c.png

    Arquivos: http://www.4shared.com/file/3ZszGjIp/PWM_L298_versao_2.html

    Nao deixe de ler esse tópico: http://forum.clubedohardware.com.br/motor-pwm-pic/857314

    Dúvidas? Pergunte!

    Falou

    Cara , mais uma vez, obrigado!!!

    Esse código também funcionou beleza, agora vou adaptar para o mikroC e depois posto aqui, o resultado.

    Valeu mesmo , abração !!!

  20. Fala garoto, claro q lembro de você.....

    Bem, vamos lá:

    Seguinte, sua lógica está correta sobre o funcionamento. Mas falta uns detalhes. você já estudou sobre o PWM? Um sinal de alta frequencia e que alteramos o ciclo de trabalho dele. Quanto mais alto for o ciclo de trabalho, mais potência entregamos ao motor.

    Esse ciclo de trabalho é o tempo do PWM que fica ON dividido pelo período total.

    Nesse caso, teremos que aumentar em mais 1 botão. Se você utilizar as interrupçoes do PIC fica fácil. Fica assim:

    1 botão para incremento do ciclo do PWM e 1 botão para decremente do ciclo, sendo que o ciclo vai de 0 a 100%.

    1 botão para troca de sentido do motor.

    1 botão para o enable/disable...

    SE você usasse o CCS eu poderia fazer um código de teste pra você. Não sei programar no MikroC.

    Vou p faculdade agora e mais tarde monto o circuito de exemplo p você.

    Falou

    Cara, muito bom mesmo ,testei tudo e funcionou direitinho , inclusive no proteus 7.7 que o pessoal disse que estava dando erro ao simular PWM.

    Vou adaptar o código para o mikroC ; ele tem as rotinas quase prontas : Pwm_Init , Pwm_Change_Duty ,Pwm_Start , Pwm_Stop , isso torna o código mais simples de entender e de implementar , depois posto aqui para servir de exemplo para a galera .

    Bom, se não for pedir muito, e como você já está fera na engenharia, gostaria de aproveitar mais um pouco rsrsr, queria saber se é possível setar o Duty cycle para um determinado valor. Exemplo :

    Esse circuito vai servir para controlar um dos motores de um braço robótico, (no total são 4 ) então como a velocidade vai ser baixa e o torque é que é o mais importante , eu poderia setar o duty cycle em um valor X ,para os dois sentido de cada motor;

    mais especificamente, uma vez que o botão enable estivesse ativado , se eu quiser mudar o sentido de rotação do motor é só manter pressionado o botão especifico (não ia ter botão stop) , quando eu parar de pressionar o botão ,o motor para; da mesma forma, se eu quiser mudar para o outro sentido , basta pressionar o outro botão e soltar ,caso queira parar . Resumindo :

    Botão Ativa enable > ativa o driver L298

    Botão sentido horário > Ativa motor no sentido horário

    Botão sentido Anti-horário > Ativa motor sentido anti-horário

    Será que dá para fazer isso ? ou eu estou viajando . Não precisa esquentar a cabeça em programar pois eu vou quebrar a cabeça com o código aqui, era só para dizer +- se da para fazer , pois essa seria a lógica do controle do braço via teclado, só que eu teria que testar da mesma forma no proteus.

    Matheus, muito obrigado , com o que você já me passou da para fazer bastante coisa , se não fosse isso estaria perdido, pois meu professor orientador é daqueles que só sabem falar " você está no Caminho certo " e mais nada kkk..

    Valeu rapaz !!!

  21. Bom, vamos lá:

    O pino RB0 está indo no pino ENABLE do L298. Se você leu o datashhet do L298, vai lembrar que esse pino é responsável pela habilitação/desabilitação do chip. Se você colocar nível alto, 5V, o chip é ativado, nível baixo, 0V, o chip é desativado ou seja o motor para.

    Os pinos RB1 e RB2 estão indo nos pinos INPUT 3 e INPUT 4. Mais uma vez, do datasheet, na página 6, na Figura 6:

    K9e85.png

    Interpretando a tabela acima:

    Se você colocar nível alto no INPUT 3 e nível baixo no INPUT 4, o motor gira para um lado, se você colocar nível baixo no INPUT 3 e nivel alto no INPUT 4, o motor gira para o outro lado. Simples.

    A unica coisa a ser feita no PIC é colcar as portas em nivel alto ou baixo.

    Caso queira utilizar o PWM, você aplica PWM em um dos INPUTS e o outro você aterra. Depois você inverte e ele gira devagar ou rápido para o outro lado.

    Qual compilador que você usa? Programa em C? Usa o proteus p simular?

    Falou

    Ô Maheus beleza cara!!! você é o Matheus da engenharia Elétrica da UFSJ?

    Eu sou o Aender, (lembra ? ) tb estudava Eng Elétrica aí, depois mudei para Computação na UFLA . Por ironia do destino, estou tendo que trabalhar com engenharia de novo rsrsr....

    Bom, primeiramente muito obrigado pela ajuda, vejo que você está fera na engenharia rsrsr ...participa em vários tópicos aqui. Vamos lá ,para programar vou usar C , mais especificamente uma biblioteca do compilador mikroC que já tem as rotinas para PWM parcialmente prontas.Por último, vou simular no Proteus, e os controles serão feitos por botões Push-Button , tipo , um botão irá mover o motor em um sentido o outro botão para o outro sentido, isso é só para poder testar no Proteus, pois futuramente esse controle será feito via teclado do PC.Minha principal dúvida era sobre os sinai que eu deveria mandar para o L298 , partindo do PIC, tá complicado pois estou tendo que estudar tudo sozinho, aqui tem uma disciplina eletiva só de microcontroladores e sistemas embarcados , mas só vai sair semestre que vem .

    Vamos ver se eu entendi então, vamos por partes rsrsr...

    Bom, o enable deve estar sempre em nível alto então, caso eu queira alterar o sentido de rotação do motor (funcionaria como uma chave ) .Quanto ao PWM (que será o tipo de controle usado) você disse que seria necessário somente um IMPUT o outro eu poderia colocar no ground, e bastaria inverter , para mudar o sentido do motor; bastaria então, aplicar PWM no IMPUT 3 e colocar o IMPUT 4 no terra e para mudar o sentido ,colocar o IMPUT 3 no terra e aplicar PWM no IMPUT 4 ? Isso no proteus, seria então, três botões Push-Button que acionariam os sinai do PIC : Um para o enable e dois para o PWM (um para cada sentido do motor).É mais ou menos por aí ?

    Muito obrigado cara, só com a postagem anterior já deu para clarear muito as idéias, abraço.

  22. Olá moçada tudo bem ?

    Estou com alguns problemas aqui, estou desenvolvendo um projeto aqui na FACU para controlar um motor Dc com PIC e PWM, mas como não tenho muita experiência com eletrônica estou encontrando dificuldades. Minha dúvida é o seguinte : que variáveis terei que controlar no PIC (que sinais enviarei para o driver L298) para que o motor possa girar para os dois lados e tb parar .Em anexo tem um circuito simples de controle usando um PIC 18F452 e e o driver L298 , no circuito (que usa PWM ) ,três pinos são usados para o controle : RB0, RB1,RB2, mas não sei exatamnete o que esses três pinos estão enviando para o driver, tipo, qual pino envia o pwm? e os demais servem pra que? Sei que para controlar o motor, você tem que controlar o sentido da corrente, mas não estou conseguindo enxergar essas variáveis no PIC e como isso acontece, e qual a função de cada pino de controle do PIC. Isso deve ser até uma pergunta ***** , mas infelizmnte não estou conseguindo entender.

    Desde já, agradeço a colaboração de todos, valeu galera !!!!

    post-831556-13884959233039_thumb.gif

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!