Show Posts
Pages: [1] 2 3 ... 5
1  International / Deutsch / Re: Fehler beim Bootloader installieren: Yikes! Invalid device signature. on: February 22, 2013, 12:26:09 pm
so, hab nun den MCU ausgetauscht, hab dabei bemerkt das ein Kontakt vom Resonator nicht richtig auflag und wahrscheinlich n kleiner Spalt vorhanden war. Device signatur passt nu, zumindest kommt die Meldung mit dem Yikes nicht mehr  smiley-grin

Jetzt kommt da aber ne andere Fehler-Meldung:

Quote
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0xff != 0x00
avrdude: verification error; content mismatch
avrdude: Send: Q [51]   [20]
avrdude: Recv: . [14]
avrdude: Recv: . [10]

avrdude done.  Thank you.
smiley-confuse

kann man dabei was zerschießen, wenn er nicht alles geladen hat? oder kann man das öfters wiederholen?





2  International / Deutsch / Re: Fehler beim Bootloader installieren: Yikes! Invalid device signature. on: February 22, 2013, 12:10:33 pm
hatte ich schon versucht, siehe ersten post
3  International / Deutsch / Re: Fehler beim Bootloader installieren: Yikes! Invalid device signature. on: February 22, 2013, 10:14:44 am
moin,
Ist auf jeden fall ein MEGA328P: aufm chip steht MEGA328P AU 1109

hab jetzt mal mit erweiterter Ausgabe versucht den bootloader zu installieren: 

Quote
avrdude: Device signature = 0x000000

da hab ich wohl was verbockt, evtl den MCU zerschossen  smiley-roll-blue
Kontakte sind soweit alle in ordnung, finde jedenfalls keine Fehler

ma versuchen ob ich den wieder los bekomm  smiley-confuse

4  International / Deutsch / Re: Fehler beim Bootloader installieren: Yikes! Invalid device signature. on: February 20, 2013, 06:03:12 pm
Hab unter Tools -> Board ->  Arduino Pro or Pro Mini (3,3V, 8 MHz) w/ ATmega328 ausgewählt, Arduino als ISP und dann auf Bootloader installieren. Das mit der erweiterten Anzeige werd ich ma ausprobieren, kannte ich noch net, thx
5  International / Deutsch / Fehler beim Bootloader installieren: Yikes! Invalid device signature. on: February 20, 2013, 05:00:20 pm
Nabend,
wollte mir ein nano Quadrocopter bauen und zur Steuerung/Regelung ein ATMEGA328P-AU (3,3V/8MHz) benutzen. Bei der Platine hab ich mich an den aufbau des Pro Mini gehalten. Hat auch alles so weit ganz gut geklappt smiley, bis zum installieren des Bootloaders smiley-sad. Als Programmer habe ich einen Duemilanove genommen und alles nach Arduino-ISP-Tutorial verdrahtet, hab aber die 3,3V des Arduinos an meine Schaltung gelegt. Habs auch schon mit ner externen Spannungsquelle versucht, glaube mich daran zu erinnern dass die 3,3V vom Arduiono vom FTDI-chip kommen und der wahrscheinlich nicht so viel verträgt.
Bekomm beim Installieren des Bootloaders nun immer diese Fehlermeldung:
Code:
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

Woran könnte das liegen? Hab alles durchgecheckt, weiss echt nicht weiter.

Kann man irgendwie feststellen obs der ATMEGA überhaupt tut, ohne Bootloader?

hier ein Video wer son ding noch net gesehn hat:


greetz
akrlfix

6  International / Deutsch / Re: 3,3V Arduino @ 16MHz ? on: February 19, 2013, 06:42:28 pm
Thx für die Antworten.
Hab mir nun n 8MHz Resonator besorgt.
Allerdings hab ich nu probleme den Bootloader zu installieren.
Wollte dazu ein Duemilanove als Programmer verwenden und hab dazu folgende Verbindungen gemacht:

Duemilanove   Nachbau
GND      GND
3,3V      VCC
D10      RESET
D11      D11
D12      D12
D13      D13

Bekomm nun immer die Fehlermeldung:

avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

Hab mehrmals die Schaltung durch gemessen/getestet kann aber keinen Fehler finden.

Kann mir da jmd evtl. weiterhelfen, komm net weiter.

hab da noch ne frage:  hab mir mal vor ner Weile ein 3,3V FTDI-Kabel besorgt und heute mal ausprobiert,
hab allerdings 5V gemessen. Oder hat das Kabel nur am Seriellen Port 3,3V Pegel?

greetz
akrlfix
7  International / Deutsch / 3,3V Arduino @ 16MHz ? on: February 18, 2013, 06:48:00 pm
Tach,
hab mir mal n Arduino Board (ATMEGA328P-AU) selbst hergestellt und leider keine 8 MHz Resonatoren nur 16MHz. Der Pro Mini z.B. wird ja nur mit 3,3V/8MHz oder 5V/16MHz angeboten. Meine Frage also: Kann ich den ATMEGA auch mit 3,3V und 16MHz laufen lassen?

greetz
akrlfix
8  International / Deutsch / Re: Verständnisproblem: Arduino zu schnell?? on: October 10, 2011, 03:22:31 pm
ahh, thx smiley-grin
9  International / Deutsch / Re: Verständnisproblem: Arduino zu schnell?? on: October 10, 2011, 03:16:38 pm
thx für die nette abfrage, hat aber leider auch net gefunzt
habs jetzt mit ner millis()-Abfrage gelöst und n intervall von einer sekunde, er liest also jetzt jede sekunde die temp und alles ohne delay, jhuh smiley-grin
jetzt noch die regelparameter einstellen  smiley-neutral

Code:
/*
 Programm für Geregelte Heizplatte aus Teilen vom alten Bügeleisen,
   + LCD-Display
   + Temperatur Messung mit Thermoelement und MAX6675
   + Rotary-Encoder für Temperatur-Einstellung
   
 */

// librarys
#include <LiquidCrystal.h>
#include <max6675.h>
#include <PID_v1.h>


// Pins
#define RWPin 10
#define thermoDO 4
#define thermoCS 3
#define thermoCLK 12
#define encoder0PinA 2
#define encoder0PinB 13
#define SCHALTAUSGANG 10

// Variablen
long interval = 1000;
volatile long previousMillis = 0;
volatile unsigned int encoder0Pos = 20;
int IST = 0;
int SOLL = 0;
//                                                                  ====================
//Regelungs-Variablen
double Setpoint, Input, Output;

//Regel-Parameter und Variablen aufzeigen                  Sachen für REGELUNG
//                                 Kp,Ki,Kd
PID myPID(&Input, &Output, &Setpoint,1,1,4, DIRECT);            //REVERSE      DIRECT

int WindowSize = 1000;
unsigned long windowStartTime;
//                                                                  ====================


// LCD        (RS, EN, D4, D5, D6, D7)  R/W auf GND
LiquidCrystal lcd(9, 11, 8, 7, 6, 5);

// MAX6675 init.
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);

// Grad-Symbol für Display
uint8_t degree[8]  = {140,146,146,140,128,128,128,128};

// ////////////////////////////////////////  SETUP ////////////////////////////////
void setup() {
   pinMode (encoder0PinA,INPUT);
   pinMode (encoder0PinB,INPUT);
   pinMode (SCHALTAUSGANG,OUTPUT);
   Serial.begin (9600);
   
   attachInterrupt(0, doEncoder, CHANGE);
//                                                                  ====================   
   windowStartTime = millis();
 
   //initialisierung der Regelungs-Variablen
   Setpoint = 100;

   //tell the PID to range between 0 and the full window size      Sachen für REGELUNG
   myPID.SetOutputLimits(30, WindowSize);

   //turn the PID on
   myPID.SetMode(AUTOMATIC);
//                                                                  ====================   
   pinMode(RWPin, OUTPUT);
   digitalWrite(RWPin, LOW);
   
   //LCD Initialisieren
   lcd.begin(16,2);
   lcd.createChar(0, degree);
}

// ////////////////////////////////////////// LOOP ////////////////////////////////
void loop() {
 
    unsigned long currentMillis = millis();
    if(currentMillis - previousMillis > interval) {
      previousMillis = currentMillis; 
      Input = thermocouple.readCelsius();
      Serial.println(Input);
     }
   
  // Temperatur einlesen
   Setpoint =  encoder0Pos;
   myPID.Compute();                          //    <- Regelungsberechnung
   
   Serial.print(Setpoint);
   Serial.print(" / ");
   Serial.print(Input);
   Serial.print(" / ");
   Serial.print(Output);
   
   unsigned long now = millis();
   if(now - windowStartTime>WindowSize)
   { //time to shift the Relay Window                                          REGELUNG
     windowStartTime += WindowSize;
   }
   if(Output > now - windowStartTime) {
     digitalWrite(SCHALTAUSGANG,HIGH);
    Serial.println("    high");
   }
   else {
     digitalWrite(SCHALTAUSGANG,LOW);
     Serial.println("    low");
   }
   
   doDisplay(Input,encoder0Pos);
 
}

void doEncoder() {
  if (digitalRead(encoder0PinA) == digitalRead(encoder0PinB)) {
    encoder0Pos++;
  } else {
    encoder0Pos--;
  }
  if (encoder0Pos == 19) {encoder0Pos++;}        // Begrenzung auf > 0
  if (encoder0Pos == 200) {encoder0Pos--;}      // Begrenzung auf < 100
}

void doDisplay(int IST,int SOLL) {
  static double IST_alt = 0;
  static double SOLL_alt = 0;

  if(    !(  (SOLL == SOLL_alt) && (IST == IST_alt)  )   ) {
    // was neues zu tun ?
    lcd.setCursor(1, 0);
    lcd.print("IST: ");
    lcd.print(IST);
    lcd.print(0, BYTE);
    lcd.print("C ");
    lcd.setCursor(0, 1);
    lcd.print("SOLL: ");
    lcd.print(SOLL);
    lcd.print(0, BYTE);
    lcd.print("C ");
    lcd.print(" ");
    if (SCHALTAUSGANG == HIGH){
      lcd.print("*");
     }
     //lcd.clear();
     IST_alt = IST;
     SOLL_alt = SOLL;
  }

}   
10  International / Deutsch / Verständnisproblem: Arduino zu schnell?? on: October 10, 2011, 10:54:47 am
Tach,
wollt mir ne geregelte Heizplatte zusammenbasteln, hat auch so weit alles gut funktioniert. Allerdings hab ich nu ein Problem bei der Software.

kurze Beschreibung der Hardware:

    Heizplatte-----------SolidStateRelais--------------230V
         |                             ^
         v                             |      
     MAX6675----------------Arduino

Arduino schaltet mit Hilfe vom MAX6675 ermittelten Werte das SolidStateRelais, so war es zumindestens gedacht smiley-lol

hab beim testen aber nu gemerkt dass er die Temperatur nur ein einziges mal ausliest und zwar ganz am anfang
wenn ich nu n delay einbau klappts einwandfrei, wollte wegen der Regelung komplett auf delay verzichten

Code:
/*
 Programm für Geregelte Heizplatte aus Teilen vom alten Bügeleisen,
   + LCD-Display
   + Temperatur Messung mit Thermoelement und MAX6675
   + Rotary-Encoder für Temperatur-Einstellung
  
 */

// librarys
#include <LiquidCrystal.h>
#include <max6675.h>
#include <PID_v1.h>


// Pins
#define RWPin 10
#define thermoDO 4
#define thermoCS 3
#define thermoCLK 12
#define encoder0PinA 2
#define encoder0PinB 13
#define SCHALTAUSGANG 10

// Variablen
volatile unsigned int encoder0Pos = 20;
double IST = 0;
double SOLL = 0;
//                                                                  ====================
//Define Variables we'll be connecting to
double Setpoint, Input, Output;

//Specify the links and initial tuning parameters                  Sachen für REGELUNG
PID myPID(&Input, &Output, &Setpoint,2,5,1, DIRECT);

int WindowSize = 1000;
unsigned long windowStartTime;
//                                                                  ====================


// LCD init.  lcd(RS, EN, D4, D5, D6, D7)  R/W auf GND
LiquidCrystal lcd(9, 11, 8, 7, 6, 5);

// MAX6675 init.
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);

// make a cute degree symbol
uint8_t degree[8]  = {140,146,146,140,128,128,128,128};

// ////////////////////////////////////////  SETUP ////////////////////////////////
void setup() {
   pinMode (encoder0PinA,INPUT);
   pinMode (encoder0PinB,INPUT);
   pinMode (SCHALTAUSGANG,OUTPUT);
   Serial.begin (9600);
  
   attachInterrupt(0, doEncoder, CHANGE);
//                                                                  ====================  
   windowStartTime = millis();
  
   //initialize the variables we're linked to
   Setpoint = 100;

   //tell the PID to range between 0 and the full window size      Sachen für REGELUNG
   myPID.SetOutputLimits(0, WindowSize);

   //turn the PID on
   myPID.SetMode(AUTOMATIC);
//                                                                  ====================  
   pinMode(RWPin, OUTPUT);
   digitalWrite(RWPin, LOW);
  
   // set up the LCD's number of columns and rows:
   lcd.begin(16,2);
   lcd.createChar(0, degree);
}

// ////////////////////////////////////////// LOOP ////////////////////////////////
void loop() {
  
   // Temperatur einlesen
   Input = thermocouple.readCelsius();
   Setpoint =  encoder0Pos;
   myPID.Compute();                          //    <- Regelungsberechnung

  
   Serial.print(Setpoint);
   Serial.print(" / ");
   Serial.print(Input);
   Serial.print(" / ");
   Serial.print(Output);
    
   unsigned long now = millis();
   if(now - windowStartTime>WindowSize)
   { //time to shift the Relay Window                                          REGELUNG
     windowStartTime += WindowSize;
   }
   if(Output > now - windowStartTime) {
     digitalWrite(SCHALTAUSGANG,HIGH);
    Serial.println("    high");
   }
   else {
     digitalWrite(SCHALTAUSGANG,LOW);
     Serial.println("    low");
   }
 
  // Ausgabe auf LCD
  lcd.setCursor(1, 0);
  lcd.print("IST: ");
  lcd.print(Input);
  lcd.print(0, BYTE);
  lcd.print("C ");
  lcd.setCursor(0, 1);
  lcd.print("SOLL: ");
  lcd.print(encoder0Pos);
  lcd.print(0, BYTE);
  lcd.print("C ");
  lcd.print("   ");
  if (SCHALTAUSGANG == HIGH){
    lcd.print("*");
   }
  //lcd.clear();
  delay(500);
}

void doEncoder() {
  if (digitalRead(encoder0PinA) == digitalRead(encoder0PinB)) {
    encoder0Pos++;
  } else {
    encoder0Pos--;
  }
  if (encoder0Pos == 19) {encoder0Pos++;}        // Begrenzung auf > 0
  if (encoder0Pos == 300) {encoder0Pos--;}      // Begrenzung auf < 100
}

weiss da zufällig jmd warum dies so ist?

edit:
hab noch mal n bissl rumgetestet und gluab das hängt irgendwie mit der Kommunikation mitn LCD zusammen.
hab das LCD-ausgabe in eine Funktion getan und beim Aufruf jeweils vor und hinter ein delay von 100 getan -> funzt
schon auf jeden fall ne verbesserung zum 500er delay, aber immer noch nicht so wie gewünscht

geänderter Coder:
Code:
/*
 Programm für Geregelte Heizplatte aus Teilen vom alten Bügeleisen,
   + LCD-Display
   + Temperatur Messung mit Thermoelement und MAX6675
   + Rotary-Encoder für Temperatur-Einstellung
   
 */

// librarys
#include <LiquidCrystal.h>
#include <max6675.h>
#include <PID_v1.h>


// Pins
#define RWPin 10
#define thermoDO 4
#define thermoCS 3
#define thermoCLK 12
#define encoder0PinA 2
#define encoder0PinB 13
#define SCHALTAUSGANG 10

// Variablen
volatile unsigned int encoder0Pos = 20;
int IST = 0;
int SOLL = 0;
//                                                                  ====================
//Regelungs-Variablen
double Setpoint, Input, Output;

//Regel-Parameter und Variablen aufzeigen                  Sachen für REGELUNG
//                                 Kp,Ki,Kd
PID myPID(&Input, &Output, &Setpoint,1,1,4, DIRECT);            //REVERSE      DIRECT

int WindowSize = 1000;
unsigned long windowStartTime;
//                                                                  ====================


// LCD        (RS, EN, D4, D5, D6, D7)  R/W auf GND
LiquidCrystal lcd(9, 11, 8, 7, 6, 5);

// MAX6675 init.
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);

// Grad-Symbol für Display
uint8_t degree[8]  = {140,146,146,140,128,128,128,128};

// ////////////////////////////////////////  SETUP ////////////////////////////////
void setup() {
   pinMode (encoder0PinA,INPUT);
   pinMode (encoder0PinB,INPUT);
   pinMode (SCHALTAUSGANG,OUTPUT);
   Serial.begin (9600);
   
   attachInterrupt(0, doEncoder, CHANGE);
//                                                                  ====================   
   windowStartTime = millis();
 
   //initialisierung der Regelungs-Variablen
   Setpoint = 100;

   //tell the PID to range between 0 and the full window size      Sachen für REGELUNG
   myPID.SetOutputLimits(60, WindowSize);

   //turn the PID on
   myPID.SetMode(AUTOMATIC);
//                                                                  ====================   
   pinMode(RWPin, OUTPUT);
   digitalWrite(RWPin, LOW);
   
   //LCD Initialisieren
   lcd.begin(16,2);
   lcd.createChar(0, degree);
}

// ////////////////////////////////////////// LOOP ////////////////////////////////
void loop() {
  // Temperatur einlesen
   Input = thermocouple.readCelsius();
   Setpoint =  encoder0Pos;
   myPID.Compute();                          //    <- Regelungsberechnung
   
   Serial.print(Setpoint);
   Serial.print(" / ");
   Serial.print(Input);
   Serial.print(" / ");
   Serial.print(Output);
   
   unsigned long now = millis();
   if(now - windowStartTime>WindowSize)
   { //time to shift the Relay Window                                          REGELUNG
     windowStartTime += WindowSize;
   }
   if(Output > now - windowStartTime) {
     digitalWrite(SCHALTAUSGANG,HIGH);
    Serial.println("    high");
   }
   else {
     digitalWrite(SCHALTAUSGANG,LOW);
     Serial.println("    low");
   }
   
   
   delay(100);
   doDisplay(Input,encoder0Pos);
   delay(100);
   
}

void doEncoder() {
  if (digitalRead(encoder0PinA) == digitalRead(encoder0PinB)) {
    encoder0Pos++;
  } else {
    encoder0Pos--;
  }
  if (encoder0Pos == 19) {encoder0Pos++;}        // Begrenzung auf > 0
  if (encoder0Pos == 200) {encoder0Pos--;}      // Begrenzung auf < 100
}

void doDisplay(int IST,int SOLL) {
  lcd.setCursor(1, 0);
  lcd.print("IST: ");
  lcd.print(IST);
  lcd.print(0, BYTE);
  lcd.print("C ");
  lcd.setCursor(0, 1);
  lcd.print("SOLL: ");
  lcd.print(SOLL);
  lcd.print(0, BYTE);
  lcd.print("C ");
  lcd.print(" ");
  if (SCHALTAUSGANG == HIGH){
    lcd.print("*");
   }
  //lcd.clear();
}


greetz
akrlfix
11  International / Deutsch / Re: I2C-ICs mit verschiedenen Betriebsspannungen on: September 26, 2011, 02:19:07 pm
thx an alle,
hab mir  jetzt mal n paar Pegelwandler "TXS0102" bestellt.
gabs bei TI sogar als Sample, also 0€  smiley-lol

http://focus.ti.com/general/docs/gencontent.tsp?contentId=69854
(3 Tage Lieferzeit - aus USA!!!)

greetz
akrlfix
12  International / Deutsch / Re: Neues FTDI-Kabel: Nicht in Deutschland erlaubt??? on: September 18, 2011, 05:37:41 pm
ups, da hab ich mich wohl verguckt  smiley-grin
13  International / Deutsch / Neues FTDI-Kabel: Nicht in Deutschland erlaubt??? on: September 18, 2011, 11:46:56 am
Tach,
wollte mir mal n FTDI-Kabel bestellen und da die alten ja kaum noch zu bekommen sind hab ich mich ma nach den neuen umgeschaut, und das gefunden: http://www.soselectronic.de/?str=371&artnum=112576
allerdings steht da "not allowed to sell in Germa..."

was solln das???

weiss jmd warum

greetz
akrlfix
14  International / Deutsch / Re: Selbst gebaute Spannungsversorgung für arduino an 230V on: September 18, 2011, 10:51:53 am
würd noch n spannungsregler wie "LM317" http://www.datasheetcatalog.org/datasheet/nationalsemiconductor/DS009063.PDF hinzufügen, dann bekommste ne absolut glatte spannung
15  International / Deutsch / Re: Platinen selber herstellen on: September 15, 2011, 05:01:37 pm
9,30€ + Versandkosten für ca 90 EuroPlatinen, glaube da gibts nix billigeres  smiley-lol
Pages: [1] 2 3 ... 5