LusoRobótica - Robótica em Português
Electrónica => Electrónica Geral => Tópico iniciado por: dio123 em 09 de Abril de 2015, 21:45
-
O trabalho deixa sem tempo e vontade para fazer alguma coisa, recentemente encontrei um siemens me45 peguei nele soldei fios meti o arduino abri hyper terminal at e voilá. Um teste rapido e fiz chamada.
Apesar de ainda não ter ideia do que fazer com ele, e a bateria está morta, preciso de passar 5v de 7805 para 3.7v vou alimentar o telemovel pelos pinos onde ligava a bateria, mas da melhor maneira possivel (eficiencia - consumo).
1- Usar lm358 como regulador de voltagem
2- Low-dropout /regulador (voltagem se existir para 3.7v)
3- USB LiPo Battery Charger do ebay ( nao sei se será solução)
4- outra ideia.
Estou virado para a 2ª opção mas aceito sugestões.
Obrigado.
-
Mete uns bons condensadores nisso: o rádio manda uns picos de corrente jeitosos a transmitir que podem aninhar a fonte se não for tido em conta.
-
Um 358 é um op-amp.
Pensa em ter capacidade para 2-3A, só para jogar pelo seguro...
-
Boa tarde, peguei no LM317 calculei as resistências para dar 3.7v ao telemóvel --> ok
Pinos TX, RX do telemovel com diodo zener 3.3V. --> ok
Abri o arduino Serial begin(9600); SerialPrintln("ATD123456"); e telemóvel faz chamada. --> ok
Circuito está ok
Agora o problema é: fui aos tutoriais do user Senso avr-gcc, vi codigo USART copiei para avr studio, abri o datasheet fiz as alterações para correspondentes para atmega8 e upload e o telemóvel não faz chamadas.
O que esta aqui a falhar no codigo?
#define F_CPU 16000000UL // 16 MHz
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
// Define baud rate
#define BAUDRATE 9600
#define BAUD_PRESCALLER (((F_CPU / (BAUDRATE * 16UL))) - 1)
//declaração das nossas funções
void USART_Init(void);
void USART_send( unsigned char data);
void USART_putstring(char* StringPtr);
char String[]="ATD9666";
int main(void){
USART_Init(); //Inicializar a usart
while(1){ //Loop infinito
USART_putstring(String); //Passamos a nossa string á função que a escreve via serial
_delay_ms(5000); //E a cada 5s
}
return 0;
}
void USART_Init(void){
UBRRL = (uint8_t) (BAUD_PRESCALLER);
UBRRH = (uint8_t)(BAUD_PRESCALLER >> 8 );
UCSRB = ((1<<TXEN)|(1<<RXEN) | (1<<RXCIE));
UCSRC = (3<<UCSZ0);
}
void USART_send( unsigned char data){
while(!(UCSRA & (1<<UDRE)));
UDR = data;
}
void USART_putstring(char* StringPtr){
while(*StringPtr != 0x00){
USART_send(*StringPtr);
StringPtr++;}
}
-
Tens um smilley no meio do código.
Isso não está a dar erro a compilar?
-
smilley é 8. mas já corrigi. (bug ao copiar para o forum).
No avr studio não dá erros - Build succeeded with 0 Warnings...
comparando com outros exemplos de codigo que há pela net, nao vejo nada de diferente.
-
Começar pelo básico..
Blink a led, liga isso a uma porta serial e confirma que está a funcionar.
Como é que estão os fuses?
-
Começar pelo básico..
Blink a led, liga isso a uma porta serial e confirma que está a funcionar.
Como é que estão os fuses?
Em vez de ligares o atmega ao telemovel, liga directamente ao hyper terminal e ve o que recebes. Estas a mandar os caracteres de finalizacao, 'cr' e assim?
-
Ha aqui alguma coisa que esta mal, pois peguei no atmega328p novo, meti os fuses, meti bootloader do arduino e a seguir o blink. O led pisca.
Entao abri o avr studio meti o blink , o led fica a piscar mas quase nem se ve
-
Definiste a porta como saída?
-
fiz copy pasfe de tutorial user Senso. Sera que e alguma coisa no avr studio.
-
resolvido todos os problemas.
quanto o nao fazer chamada faltava \r ficando char cmdat[]="ATD9912\r";