Go Down

Topic: Pin ABfrage und umleiten (Read 2079 times) previous topic - next topic

lota

Mar 02, 2009, 04:06 pm Last Edit: Mar 02, 2009, 06:11 pm by lota Reason: 1
Hallo,
wie kann man mit der Arduino0012 den Signalzustand von zB. pin10 abfragen und auf Pin8 auf High schalten? Ich hatte mir das so gedacht.
Auf PB2 läuft mein PWM Signal.

if ( PINB & (1<<PINB2) )
{
    PORTB |= (1<<PB2);
}

Geht aber nicht.
Nun hab ich es so probiert.

const int PIN_PWM_OUTPUT = 10;//The high precision PWM pin
int value = 0;


const int DIGITAL_PIN = 10;//this is the digital output pin to use, it can be set to 9 or 10
 

   int PIN_PWM2   = 8;
   pinMode(PIN_PWM_OUTPUT, OUTPUT);
   pinMode(PIN_PWM2, OUTPUT);  
   
value = digitalRead(DIGITAL_PIN);

 digitalWrite(PIN_PWM2, value);  

Funzt auch nicht.

Gruß


kiwix

Hallo,

kannst Du mal genauer beschreiben was nicht funktioniert?

Ich habe da keine Erfahrung, aber ich bin mir gar nichts sicher, ob das überhaupt funktionieren kann. Bei einem PWM wird ja nur der Ausgang pulsierend an und aus geschaltet, und somit dürfte der fast immer high sein und wenn man das Ergebnis mit einer LED anzeigt, dann müsste die für das Auge immer Leuchten, ggf. nur manchmal etwas dunkler und da bezweifel ich, dass man das erkennen kann.

Gruß
KiWiX

lota

Hi,
ich möchte das Signal auf drei pins haben. Ich weiß auch nicht ob das geht.  Eventuell kann man das ja irgend wie auslesen und weiter schicken. Wenn es dann nicht geht, werde ich drei Chips nehmen und laufen lassen. Dann ist  nur die Frequenz nicht synchron. Es muss auch der 16bit Timer sein.

Gruß Lorenz

kiwix

Tja,

da kann ich auch nicht helfen. Aber ich habe mir mal folgendes angesehen:
http://arduino.cc/en/Tutorial/PWM

und hier

http://arduino.cc/en/Reference/AnalogWrite

habe ich folgendes gelesen:
Quote
Writes an analog value (PWM wave) to a pin. Can be used to light a LED at varying brightnesses or drive a motor at various speeds. After a call to analogWrite(), the pin will generate a steady square wave of the specified duty cycle until the next call to analogWrite() (or a call to digitalRead() or digitalWrite() on the same pin). The frequency of the PWM signal is approximately 490 Hz.

On newer Arduino boards (including the Mini and BT) with the ATmega168 chip, this function works on pins 3, 5, 6, 9, 10, and 11. Older USB and serial Arduino boards with an ATmega8 only support analogWrite() on pins 9, 10, and 11.


Ich würde das jetzt so interpretieren, dass man den Puls nicht sinnig wieder einlesen und weiterleiten kann. Da könnte man doch besser das Signal direkt parallel auf 3 Ausgängen ausgeben.

gruß
kIWiX

lota

Hi,
genau auf drei Ausgänge brauch ich es ja. Aber ich bekomme das Signal nur auf  PB2 . Mit der INt Abfrage soll es noch gehen. Aber da muss ich wohl noch lesen.

Gruß
Lorenz  

lota

Hallo,
ich bin da immer noch nicht so richtig weiter gekommen. Kann mir nicht mal irgend wer einen Tipp geben wie ich ein externes PWM Signal einlesen und auf einen anderen pin ausgeben kann? Oder geht es nicht? In AVR C hab ich was von Signalkopplung gelesen. Aber geht das auch mit der Arduinosoftware?

Gruß Lorenz

Poldi

Moin Lorenz.

Also ich weiß nicht recht ob ich Dich richtig verstanden habe, aber vielleicht hilft Dir folgendes weiter:

Ich habe in einem Projekt das Ausgangs-PWM-Signal benutzt um Vorschaltgeräte von Leuchtstoffröhren zu dimmen. Diese brauchen ein 1-10V Signal. Dazu habe ich das PWM-Signal vom Arduino mit einem Op-Amp um Faktor zwei verstärkt (um auf 10V zu kommen) und anschließend mit einem RC-Glied "geglättet".

Schau Dir doch mal folgende Seite an. Wenn Du Dein PWM-Signal, wie dort beschrieben, in ein Analogsignal wandelst kannst Du es am analogen Eingang des Arduino einlesen und entsprechend weitere PWM-Ausgänge schalten.

http://www.ontrak.net/pwm.htm

Hoffe es ist das was Du suchst ;-)

Lieben Gruß
Poldi

lota

Hi,
danke erst mal. Das ist es nicht. Ich brauche drei PWM Signale. Ähnlich wie bei den Brushless Motoren. Ich möchte aber nur die drei zeitversetzten Signale haben. Der PWM code, den ich hier habe, gibt mir das nur an einen Pin aus. Ist regelbar bis 1Mhz. Nun dachte ich, da ich es  mit dem Arduino nicht hin bekomme, ich schicke das Signal in einen zweiten Chip und  gebe es dann zeitversetzt auf drei Ausgänge. Aber auch das will mir nicht gelingen. Bin eben noch zuviel Anfänger für das Projekt.
Gruß Lorenz

Go Up