Show Posts
Pages: [1] 2 3 ... 5
1  International / Generale / Re: non riesco più a caricare su stand-alone arduino on: April 01, 2014, 10:23:03 am
ciao, si occupa la seriale, infatti ora ho messo un ritardo all'avvio in modo da evitare tali problemi.
Tuttavia, dopo ulteriori prove, ho visto che non riuscivo neanche a riprogrammare il bootloader. In modalita' verbose ho scoperto che il chip non era riconosciuto dal programmatore. La causa che bloccava il riconoscimento era il cristallo da 16MhZ e i relativi condensatori, poichè il tutto è montato su breadboard, estraendo e reinserendo questi 3 componenti, tutto è tornato a funzionare. smiley
non so se la causa sia la capacita' dei contatti della breadboard oppure la bassa qualita' di tali contatti.
2  International / Generale / non riesco più a caricare su stand-alone arduino on: March 30, 2014, 01:38:42 pm
ciao a tutti
fino ad oggi ero riuscito a caricare i miei sketches su un ATMEGA328p che utilizzo su una mia pcb come se fosse un arduino.
Avevo quindi precedentemente caricato il bootloader su questo chip (tramite un arduino mega), e lo programmavo ogni volta usando il classico convertitore usb FTDI, collegando tutto su breaboard come segue:
-TX e RX di arduino al RX e TX del programmatore
-l'alimentazione 5V dal programmatore ai 4 pin di alimentazione di arduino
-DTR del programmatore --> 0,1uF --> pin 1 di arduino
-10K dal pin 1 di arduino a 5V
-cristallo da 16mHZ con due condensatori da 22pF

Il tutto ha sempre funzionato benissimo, anche oggi mentre modificavo uno sketch, poi all'improvviso, dopo un altra modifica nel codice, ha smesso di caricare dicendomi:

avrdude: stk500_getsync(): not in sync: resp=0x00

Ripeto che non ci sono state modifiche hardware/software, poichè fino a 2 minuti prima caricava tranquillamente, quindi scarterei problemi di driver/porta COM errata/board selezionata errata/ecc..

Aggiungo inoltre che se uso il chip sulla mia pcb, c'è ancora lo sketch funzionante prima dell'ultima modifica.
Ho provato a riavviare il pc (win 7 64bit), staccare più volte l'USB, provare le altre porte USB, senza successo..
Ho provato a ricaricare il bootloader ma mi da lo stesso errore, anche con un altro chip 328P.
Da cosa può essere dovuto?
3  International / Hardware / Re: problema con relè on: February 10, 2014, 09:54:45 am
ti ringrazio, allora forse sbaglio qui:

Code:
umiRelativa = (((umi / 1023) * 5) - 0.8) / 0.031;

dovrei mettere anche qui 1024, anche se come hai detto l'errore è molto piccolo, ma comunque in linea teorica è pur sempre errato giusto?
4  International / Hardware / Re: problema con relè on: February 10, 2014, 09:38:56 am
secondo voi in questa riga faccio bene a dividere per 1024? non ricordo come sono arrivato a questa istruzione, però mi sembra strana una divisione per 1024, non dovrebbe essere 1023?
Tuttavia di sicuro non risolve il problema..
Code:
  temp = (5 * val /1024.0) * 100.0;
5  International / Hardware / Re: problema con relè on: February 04, 2014, 10:44:59 am
ti ringrazio per l'aiuto,
avevo pensato di fare un log su scheda SD invece che via seriale (perche' non posso lasciare il pc connesso a arduino per 3 giorni di fila).. Però poi ho pensato di resettare arduino automaticamente ogni tot ore, proprio per vedere se il problema era legato alla logica (magari dovuto all'accumulo di qualche variabile o cose così)..
Allora ho attivato il watch dog timer ogni 6 ore (guidato da un interrupt che porta il tempo), l'arduino faceva reset correttamente ogni 6 ore, tuttavia il problema persisteva anche in questo modo.
6  International / Hardware / Re: problema con relè on: February 04, 2014, 10:27:46 am
certamente, eccolo qui:

Code:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

float temp = 0.0; 
float umiRelativa = 0.0;
const float temperatura_riferimento = 37.7;
const float umidita_riferimento = 52;
const float temperatura_tolleranza = 0.2;
const float umidita_tolleranza = 2;
const unsigned int TEMP_PIN = 8;
const unsigned int UMI_PIN = 9;


void setup() {
  pinMode(TEMP_PIN, OUTPUT);
  pinMode(UMI_PIN, OUTPUT);
  digitalWrite(TEMP_PIN, LOW);
  digitalWrite(UMI_PIN, LOW);
  lcd.begin(16, 2);
}
 
void loop() {

    temperatura();
    delay(200);
    umidita();
    stampa();
    delay(800);
}


void temperatura() {
 
  int val = 0;

  for (int i=0; i<100; i++)
    val = val + analogRead(A1);   
  val = val / 100;
  temp = (5 * val /1024.0) * 100.0;
 
  if (temp < temperatura_riferimento - temperatura_tolleranza)
    digitalWrite (TEMP_PIN, HIGH);
  else if (temp > temperatura_riferimento + temperatura_tolleranza - 0.1)
    digitalWrite (TEMP_PIN, LOW);
}


void umidita() {
 
  float umi = 0.0;

  for (int k=0; k<100; k++)
    umi = umi + analogRead(A0);   
  umi = umi / 100;

  umiRelativa = (((umi / 1023) * 5) - 0.8) / 0.031;
  umiRelativa = umiRelativa/(1.0546 - (0.00216 * temp));
 
  if (umiRelativa < (umidita_riferimento - umidita_tolleranza))
    digitalWrite (UMI_PIN, HIGH);
  else if (umiRelativa > (umidita_riferimento + umidita_tolleranza))
    digitalWrite (UMI_PIN, LOW);
}


void stampa() {
 
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("T:");
  lcd.print(temp);
  lcd.print("-");
  lcd.print("U:");
  lcd.print(umiRelativa);
}



7  International / Hardware / problema con relè on: February 04, 2014, 09:26:10 am
Salve a tutti
ho un problema con la gestione di relè,

l'hardware consiste in:
- Arduino Uno R3 alimentata tramite caricabatterie iPhone 5V
- Sensore di temperatura e umidita', collegati agli ingressi analogici
- Schermo LCD 16x2 standard (tramite apposita libreria)
- 3 Relè Songle 12V per commutare linee 220V.

I 3 relè hanno il loro alimentatore da 12V separato dall'alimentazione di Arduino, inoltre sono montati su pcb insieme ai componenti per pilotarli (quindi transistor, diodi di protezione delle bobine, resistenze varie e led di indicazione). Quindi sono collegati ad arduino semplicemente tramite una resistenza, a porte digitali.
L'alimentazione di Arduino e i relè sono quindi separate (non isolate poichè GND è comune).

il software è molto semplice:
La routine principale non fa altro che leggere i dati dei sensori (temperatura e umidita') e a seconda di questi valori letti, decide se attivare o disattivare i relè B e C, ai quali sono collegati rispettivamente le 220V di una stufa e un umidificatore. C'è poi un terzo relè A che è sempre attivo.

Il tutto funziona perfettamente per alcuni giorni (circa 3), dopo di che noto che il relè C al quale è collegato l'umidificatore non commuta più stato (di conseguenza il sensore di umidita' nota la grande differenza di umidita', ma non riesce a intervenire sul relè).

Ecco le prove che ho fatto per cercare di capire il problema:
1) pensando che fosse un problema di relè, ho provato a invertire i relè (cioè collegare l'umidificatore al relè A o B invece che C) ma a bloccarsi è sempre quello a cui è collegato l'umidificatore (sia esso A B o C), su qualsiasi porta di arduino.
2) pensando poi che fosse colpa del software, ho provato equivalenti routine per fare le stesse operazioni logiche (ho provato anche a aggiungere un reset ogni 6 ore, ma nonostante il codice si riavvi e quindi le variabili e gli stati delle porte si azzerino, il problema persiste).
3) dopo il blocco, se prendo il relè e lo test su breadboard, funziona benissimo.
4) dopo il blocco, se spengo tutto e ricarico lo sketch su Arduino, tutto torna a funzionare benissimo.

Secondo voi da cosa può dipendere?
8  Using Arduino / General Electronics / LDO regulator: from MIC5205 to MCP1824 on: January 23, 2014, 06:50:33 pm
hello
I have a simple 5V to 3.3V regulator design that uses the MIC5205 LDO regulator:
http://www.micrel.com/index.php/products/power-management-ics/ldos/single-ldos/article/24-mic5205.html

can I put a MCP1824 in the new design (obviously changing the pinout / package) ?
https://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en533251

the original design doesn't use a CByp so I guess lownoise is not enabled.
9  Using Arduino / General Electronics / Re: starting with SMD parts on: January 04, 2014, 08:44:55 am
thanks for the tips! smiley
what about generic diode like 1N4148? what do you recommend?
10  Using Arduino / General Electronics / starting with SMD parts on: January 03, 2014, 11:50:01 am
hi everyone,
I'm designing my first SMD pcb. I will solder it at home with hands tools, so I decided to use 0603 parts since I manage to solder those parts.
Now I'd like to order resistors, capacitors and diodes on Mouser, but I'm stuck since there are plenty of choise.
Can anyone recommend me the most common manufacturer/kind of 0603 that I could buy to start?
I'm looking for common value resistors, 1% tollerance should be ok, and for 1N4148-like diodes, and for common caps like 0,1uF, 1uF and 10uF.
11  Using Arduino / Programming Questions / Re: question about Library "#include" lines on: November 11, 2013, 03:16:53 pm
but removing that line I don't mean to hide the use of the library. The sketch uses the subclass, and that one is seen as library, so it's not a matter of the writer of the sketch to include its superclass if he already included the subclass. Usually it should work like this, or not?
12  Using Arduino / Programming Questions / Re: question about Library "#include" lines on: November 11, 2013, 03:04:56 pm
if so, is there any workaround to avoid including the main class in the sketch but only include the subclass?
13  Using Arduino / Programming Questions / question about Library "#include" lines on: November 11, 2013, 02:53:03 pm
I wrote a small library, that essentially is a sub-class of another working library.

My library header has the following:
Code:
#include <Arduino.h>
#include <MainClass.h>

My library ccp file has:
Code:
#include "MyLib.h"

My sketch has:
Code:
#include "MyLib.h"

It does not verify, it says:
Code:
MyLib.h:12: error: expected class-name before '{' token
and some other erros related to variables that don't name a type

If I add this line
Code:
#include <MainClass.h>
to my sketch, it verifies/uploads/works just fine. Why?
I must specify that the sketch doesn't contain any direct reference to the MainClass, it only uses an istance of MyLib class.
Thank you
14  Using Arduino / Networking, Protocols, and Devices / Re: read slave device registers with I2C on: October 24, 2013, 04:21:02 pm
thanks, I tried this code too, but I still get random values. I also tried with other registers too, not always the same
15  Using Arduino / Networking, Protocols, and Devices / Re: read slave device registers with I2C on: October 18, 2013, 11:55:34 am
thanks, I tried it but unfortunately I can't get any "correct" value.

this is the whole code to test this thing
Code:
#include <Wire.h>

#define IRQ_PIN  2
#define MPR_1  0x5A

void setup() {
  Serial.begin(115220);
 
  pinMode(IRQ_PIN, INPUT);     
  digitalWrite(IRQ_PIN, HIGH);   
 
  Wire.begin();                 
 Wire.beginTransmission(MPR_1); 
 Wire.write(0x5E);             
  Wire.write(0x0C);             
  Wire.endTransmission();
}

void loop() {

  Wire.beginTransmission(MPR_1);
  Wire.write(0x5E);
  if (Wire.endTransmission() != 0)
      Serial.println("error #1");
  else
    if (Wire.requestFrom (MPR_1, 1) != 1)
          Serial.println("error #2");
    else {
      byte r = Wire.read();
      Serial.println(r, HEX);
    }
  Wire.endTransmission();
 
  delay(1000);
 
}

I did this loop because everytime I reset the arduino, the value read is different..so I tried to read every second, and this is an example of what I get by doing so:

Quote
20
4
0
A
2
0
20
14
2
6
80
8
Pages: [1] 2 3 ... 5