Show Posts
Pages: 1 ... 59 60 [61] 62 63 ... 95
901  International / Deutsch / Re: IR Scheinwerfer on: July 20, 2012, 05:26:25 am
Das ist natürlich richtig, allerdings bezog sich mein Post auf den Hinweis von Uwe und die daraus resultierende Frage von Ballibum.
902  International / Deutsch / Re: was mache ich mit dem ShiftIN falsch? 74HC165 on: July 20, 2012, 03:35:48 am
Am besten ein Foto wo man den IC und den Arduino sieht und erkennen kann, wo die Kabel hingehen. Dazu noch den vollständigen Sketch in Code-Tags.
Das macht es allen einfacher zu sehen wo es klemmt.
903  International / Deutsch / Re: IR Scheinwerfer on: July 20, 2012, 03:26:51 am
Ich glaube Du verstehst da gerade etwas falsch.

Die 40mA beziehen sich ja auf das, was ein Pin des Arduino liefern kann. Du schliesst ja nicht den Scheinwerfer an den Pin direkt an, sondern nur die Basis des Transistors (mit einem Vorwiderstand). Collector und Emitter des Transistors liegen dann auf der 9V Strecke. Schaltet man dann das Arduino-Pin auf HIGH, schaltet der Transistor durch und der LED-Scheinwerfer geht an.
Der Vorwiederstand vor dem LED-Scheinwerfer dient dann wiederum dazu, den Strom der über die 9V Strecke fliesst zu begrenzen.

Quote
        Transistor       ___
9 V  ----+  +---------|___|--- IR_LED --------- GND
            \_/                                               
              |                                                 
              +                                                 
             | | Basiswiderstand
             | |
              +
              |
              O  Arduino-Pin
               |

 
904  International / Deutsch / Re: IR Scheinwerfer on: July 20, 2012, 02:27:53 am
Den Strom begrenzt Du durch den Vorwiderstand. Der Transistor ist ja nur dazu da, mittels Arduino-Ausgang die 9V zu schalten.
905  International / Deutsch / Re: was mache ich mit dem ShiftIN falsch? 74HC165 on: July 20, 2012, 02:19:58 am
Achso, Du meinst eine "Glasgoogle", sag das doch gleich  smiley
906  International / Deutsch / Re: was mache ich mit dem ShiftIN falsch? 74HC165 on: July 20, 2012, 01:31:13 am
Eine Kristallkugel, ein Königreich für eine Kristallkugel.
http://www.ebay.de/itm/Glaskugel-klar-Kristallkugel-/150487472345?pt=LH_DefaultDomain_77&var=&hash=item2309c098d9
907  International / Deutsch / Re: ATTINY85 mit internen 8MHz - Fuses on: July 18, 2012, 12:39:23 pm
Ok, manchmal macht es Sinn alles zu lesen, bevor man anfängt zu basteln. :-)
Auf http://hlt.media.mit.edu/?p=1695 gibt es nämlich den passenden Abschnitt zum internen 8 MHz Takt.

Der Trick ist einmal mit der Option "Burn Bootloader" den Bootloader auf den Tiny zu packen, das macht zwar nicht viel Sinn, aber dabei werden die Fuses korrekt gesetzt.
Danach dann einfach nochmal den Sketch hochladen und gut ist.
908  International / Deutsch / ATTINY85 mit internen 8MHz - Fuses (gelöst) on: July 18, 2012, 12:09:13 pm
Hallo,

und noch eine Frage. Ich programmiere einen ATTINY85 über einen USBtinyISP mit der Arduino-IED 1.0.1.
Als Basis dienen die ATTINY-Cores (https://github.com/damellis/attiny/zipball/Arduino1)
Das klappt auch soweit sehr gut. Nun bin ich vom Blinkenbeispiel zum Dimmen einer LED übergegangen, bzw. zum Dimmen eines LED-Streifens über einen MOSFET.
Dabei fällt auf, das die LED flackern. Vermutlich ist die PWM-Frequenz zu gering.
Hat man die Tiny-Cores installiert, gibt es den ATTINY85 mit 1 MHz und 8 MHz internem Takt zur Auswahl, zusätzlich noch 20 MHz extern.
Auffällig ist, das das Flackern bei 8 MHz (Einstellung in der IDE für den Programmer) stärker ist als bei 1 MHz.
Ich habe daraufhin mit avrdude die Fuses ausgelesen und mit dein Einträgen in der boards.txt verglichen.
Bei beiden Einstellungen ist lfuse mit 0x62 gesetzt, obwohl es bei 8 MHz 0xe2 sein sollte (laut boards.txt). Da bei 8 MHz aber die CPU-Frequenz auf 8000000L gesetzt ist, laufen die Timer vermutlich auf 1/8 Geschwindigkeit.
Bei der aktuellen Einstellung 0x62 ist CKDIV8 gesetzt und damit wird ja mein Clocksignal nochmal durch 8 geteilt, oder täusche ich mich da?

Setzt die IDE keine Fuses? Ich habe mal die Debugausgaben ausgeben lassen, vielleicht hat ja jemand einen Tip für mich.
Quote
avrdude: Version 5.11, compiled on Sep  2 2011 at 18:52:52
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/Users/mario/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : unknown
         Using Programmer              : usbtiny
avrdude: usbdev_open(): Found USBtinyISP, bus:device: 002:011-1781-0c9f-ff-00
         AVR Part                      : ATtiny85
         Chip Erase delay              : 4500 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : possible i/o
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65     6     4    0 no        512    4      0  4000  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           flash         65     6    32    0 yes      8192   64    128  4500  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00

         Programmer Type : USBtiny
         Description     : USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/
avrdude: programmer operation not supported

avrdude: Using SCK period of 10 usec
CMD: [ac 53 00 00] [ff fe 53 00]
avrdude: AVR device initialized and ready to accept instructions

Reading | CMD: [30 00 00 00] [00 30 00 1e]
CMD: [30 00 01 00] [00 30 00 93]
################CMD: [30 00 02 00] [00 30 00 0b]
################################## | 100% 0.00s

avrdude: Device signature = 0x1e930b
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
CMD: [a0 01 fc 00] [00 a0 01 ff]
CMD: [a0 01 fd 00] [00 a0 01 ff]
CMD: [a0 01 fe 00] [00 a0 01 ff]
CMD: [a0 01 ff 00] [00 a0 01 ff]
avrdude: erasing chip
CMD: [ac 80 00 00] [00 ac 80 00]
avrdude: Using SCK period of 10 usec
CMD: [ac 53 00 00] [00 ac 53 00]
avrdude: reading input file "/var/folders/9c/6qx1vrws2xb3sp_cm9zpl1xc0000gn/T/build5852274583174374975.tmp/Blink.cpp.hex"
avrdude: writing flash (1044 bytes):

Writing | CMD: [4c 00 00 00] [00 4c 00 00]
###CMD: [4c 00 20 00] [00 4c 00 20]
###CMD: [4c 00 40 00] [93 4c 00 40]
###CMD: [4c 00 60 00] [93 4c 00 60]
###CMD: [4c 00 80 00] [91 4c 00 80]
###CMD: [4c 00 a0 00] [2f 4c 00 a0]
###CMD: [4c 00 c0 00] [1d 4c 00 c0]
###CMD: [4c 00 e0 00] [05 4c 00 e0]
###CMD: [4c 01 00 00] [f0 4c 01 00]
###CMD: [4c 01 20 00] [3f 4c 01 20]
###CMD: [4c 01 40 00] [91 4c 01 40]
###CMD: [4c 01 60 00] [23 4c 01 60]
###CMD: [4c 01 80 00] [91 4c 01 80]
###CMD: [4c 01 a0 00] [7d 4c 01 a0]
###CMD: [4c 01 c0 00] [de 4c 01 c0]
###CMD: [4c 01 e0 00] [1f 4c 01 e0]
####CMD: [4c 02 00 00] [cf 4c 02 00]
# | 100% 1.41s

avrdude: 1044 bytes of flash written
avrdude: verifying flash memory against /var/folders/9c/6qx1vrws2xb3sp_cm9zpl1xc0000gn/T/build5852274583174374975.tmp/Blink.cpp.hex:
avrdude: load data flash data from input file /var/folders/9c/6qx1vrws2xb3sp_cm9zpl1xc0000gn/T/build5852274583174374975.tmp/Blink.cpp.hex:
avrdude: input file /var/folders/9c/6qx1vrws2xb3sp_cm9zpl1xc0000gn/T/build5852274583174374975.tmp/Blink.cpp.hex contains 1044 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.75s

avrdude: verifying ...
avrdude: 1044 bytes of flash verified

avrdude done.  Thank you.

Für einen Tip, wie ich die PWM-Frequenz angepasst bekomme, wäre ich echt dankbar. Leider habe ich kein Oszi zur Verfügung um die PWM-Frequenz messen zu können.

Mario.
909  International / Deutsch / Re: MOSFET BUZ31 für TTL Level geeignet? on: July 18, 2012, 10:50:57 am
Danke Uwe,

auf genau so eine Erklärung hatte ich gehofft. Also verbaue ich einen 120Ohm Widerstand zwischen Arduino (eigentlich ein ATTINY) und dem Gate. Wenn der MOSFET nicht ganz durchschaltet, ist doch der Widerstand zwischen Source und Drain größer, es fällt also eine größere Spannung über dem DS-Strecke ab. Ist das richtig? Falls ja, über welche Werte reden wir da und wo findet man solche Informationen im Datenblatt?
Mario.
910  International / Deutsch / MOSFET BUZ31 für TTL Level geeignet? on: July 18, 2012, 08:43:04 am
Hallo Gemeinde,

heut habe ich auch mal eine Frage. Ich habe hier noch einige N-Kanal MOSFETs rumliegen, die ich zum Schalten von 12V verwenden möchte. Bezeichnung auf den Dingern ist BUZ31 und noch R 318.
So richtig werde ich aber aus den diversen Datenblättern die man so im Netz findet nicht schlau. Schaltet das Ding nun bei 5V TTL-Pegel am Gate voll durch, oder nicht.
Geschaltet werden ca. 1,5 bis max. 3A bei 12V (LED-Panel mit knapp 30W per PWM gedimmt).

Außerdem habe ich auch verschiedene Meinungen gefunden, ob man nun zwischen Gate und Arduino-Ausgang noch einen Widerstand braucht, oder nicht. In einigen Fällen gibt es auch einen größeren Widerstand, der zwischen Gate und Masse hängt, ich vermute mal, um das Gate schneller zu entladen und damit die Schaltzeit zu verbessern. Oder liege ich damit komplett daneben?

Tja, das analoge Leben und seine Tücken.

Mario.
911  International / Deutsch / Re: Arduino aus dem Internet erreichen on: July 17, 2012, 11:48:36 pm
Sind wir da nicht ein bisschen paranoid smiley-grin ?!
Nein, mit Sicherheit nicht. Wer nicht darüber nachdenkt ist Leichtsinnig.
912  International / Deutsch / Re: Server Client als Kombination nutzen on: July 17, 2012, 11:36:44 pm
Ok, blödsinn. Mein Fehler ...
Code:
Serial.println("bin connected");
    client.print("GET /hc_arduino_php/hc_status.php?pin=13&status=");
    client.print((char)(statuslevel+'0'));
    client.println(" HTTP/1.0");
    client.println("Host: www.hemitheconyx-caudicinctus.de");
    client.println();
    Serial.println("habe alles ausgeführt");   
Ich habe mich von Deinem HTML-Parameter "status" dazu verleiten lassen anzunehmen, das auch die C-Variable status heisst. Sie heisst aber statuslevel.
Damit sollte es gehen.
913  International / Deutsch / Re: Server Client als Kombination nutzen on: July 17, 2012, 01:54:22 pm
Okay, ich dachte ich muss den DNS-Server nur verwenden wenn ich von Aussen auf den Arduino will. Ich bin aber jetzt dennoch sicher, weil ich keine Portweiterleitung im Router aktiviert habe oder irre ich mich da?
Es ist genau anders herum. Dein Arduino braucht einen DNS Server, wenn er einen anderen Server im Netz erreichen will, von dem er nicht die IP-Adresse, sondern nur den Namen hat. Du verwendest "www.hemitheconyx-caudicinctus.de" als Servernamen, den Du ansprechen willst. Der Name nützt deinem Arduino aber nix, weil er eine IP braucht. In Deinem Fall wäre das die 85.25.245.16. Um aus dem Namen eine IP zu machen muss der Aruino einen Nameserver fragen, genau das ist dann die 8.8.8.8 (goolge-DNS -- nicht zu verwechseln mit der Google-Suchseite :-) )

Wenn Dein Arduino vom Internet aus erreichbar sein soll, muss derjenige der ihn erreichen soll den "Namen" des Arduino auflösen können. Z.B. sowas wie "mein-arduino.dyndns.org", das würde dann auf die akutelle IP Deines Routers aufgelöst werden, der dann per weitergeleitetem Port die ankommende Anfrage an Deinen Arduino durchreicht. Für diesen Vorgang braucht der Arduino selbst keinen DNS Server, er wird ja von außen aktiv angesprochen.

Das kann man eigentlich ganz gut mit einem Telefon und der Telefonauskunft vergleichen. Wenn Du (quais als Arduino) von zu Hause (dein Netzwerk) jemanden draußen anrufen willst, von dem Du nur den Namen/Adresse (Server-Adresse) hast, rufst Du erst die Telefonauskunft an und fragst nach dessen Nummer (IP), damit Du ihn direkt anrufen kannst. Dafür brauchst Du aber die Nummer (IP) der Telefonauskunft (DNS-Dienst). Nur der Name der Telefonauskunft nützt dir auch nix, weil Du ja dann trotzdem keine Nummer hast. Daher werden DNS-Server auch immer nur als IP konfiguriert und nicht als Namen.

Wenn Dich jemand anrufen will, braucht der dann wieder die Nummer der Telefonauskunft (DNS), weil er ja Deine Telefonnummer rausbekommen muss, um Dich anzurufen. Du selbst (als Arduino) sitzt nur am Telefon und wartest das jemand anruft (client_in = server.available()smiley-wink. Dafür brauchst Du die Auskunft nicht, weil Du selbst ja keine Nummer rausfinden musst.

Sorry für den Märchentext, aber mir gefiel das Beispiel beim Schreiben immer besser :-)

Was den Code angeht, der nicht funktioniert. Der war ohne Testen geschrieben. Vermutlich musst Du nur folgendes ändern
client.print((char)status+'0');
in
client.print((char)(status+'0'));
Damit wird die Operation (status + '0') auf ein einzelnes Zeichen gecastet. Es ist eine simple Umwandlung vom int-Wert 0 oder 1 (oder einer beliebigen Ziffer / nicht Zahl) in das entsprechende ASCII Zeichen 0 oder 1 (oder andere Ziffer).
Mario.
914  International / Deutsch / Re: Server Client als Kombination nutzen on: July 17, 2012, 01:04:55 pm
Die fehlt der DNS Server. Bei DHCP wird der in der Regel vom Router mit den IP-Adress Daten mit vergeben. Wenn Du dem Arduino eine feste IP gibst, dann must Du auch einen DNS Server mit angeben, falls Du wie in Deinem Fall ein FQDN wie "www.hemitheconyx-caudicinctus.de" verwenden willst.

Siehe auch http://arduino.cc/en/Reference/EthernetBegin
Hier speziell den Aufruf Ethernet.begin(mac, ip, dns, gateway, subnet);
Als DNS kannst Du einefach die 8.8.8.8 nehmen, das ist der DNS Server von Google, der ist eigentlich immer erreichbar.
915  International / Deutsch / Re: Server Client als Kombination nutzen on: July 17, 2012, 12:45:53 pm
Naja, nicht einfach nur die 2. Initialisierung auch ins setup() kopieren.
Was Du in Deinem Code machst ist im setup() die Ethernet-Lib mit einer festen IP konfigurieren, was ja auch Sinn macht, wenn Du den Arduino direkt ansprechen willst, ohne zu raten. Dann stellt Du aber plötzlich bei der 2. Initialisierung auf DHCP um.
Ich hab jetzt nicht genau geschaut, aber eigentlich brauchst Du die zweite Initialisierung nicht. Es würde vermutlich sogar reichen in dbQuery() eine lokale client Variable zu definieren, auch wenn das kein guter Stil ist und zu Verwirrungen führen kann.
Also sowas wie:
Code:
void dbQuery(int pin, int statuslevel)
{
  EthernetClient httpclient;

 
  if(httpclient.connect(serverName, 80))
...
}
Natürlich musst Du überall in der Funktion dann httpclient verwenden.

Die if/else Block kannst Du Dir auch recht einfach sparen:

Code:

/**
  * statt diesem hier:
if (statuslevel == 1)
    {
    Serial.println("bin connected");
    client.println("GET /hc_arduino_php/hc_status.php?pin=13&status=1 HTTP/1.0");
    client.println("Host: www.hemitheconyx-caudicinctus.de");
    client.println();
    Serial.println("habe alles ausgeführt");     
    }
    else
    {
    Serial.println("bin connected");
    client.println("GET /hc_arduino_php/hc_status?pin=13&status=0 HTTP/1.0");
    client.println("Host: www.hemitheconyx-caudicinctus.de");
    client.println();
    Serial.println("habe alles ausgeführt");
    }
**/
//einfach
    Serial.println("bin connected");
    client.print("GET /hc_arduino_php/hc_status.php?pin=13&status=");
    client.print((char)status+'0');
    client.println(" HTTP/1.0");
    client.println("Host: www.hemitheconyx-caudicinctus.de");
    client.println();
    Serial.println("habe alles ausgeführt");   

Der Trick steckt in client.print((char)status+'0');
Versuch mal rauszufinden, was da passiert :-)
Pages: 1 ... 59 60 [61] 62 63 ... 95