Ingang maken die vanaf 1k reageert

Heb een 6 input gemaakt (d2, d3 enz) die als je contact maakt met massa een signaal via usb naar de pc geeft.

Probleem is dat de hardware die het contact naar massa maakt een weerstand van 1k staat, deze trekt de ingang al gelijk naar massa.

Iemand een idee om dit te verhelpen?

Hoi peterdewith, welkom.

Je vertelt niet erg veel over wat je hebt gebouwd, alleen waar je een probleem ziet.
Dat maakt het wat lastig om je vraag te beantwoorden, maar ik zal toch een poging wagen.
Mag ik aannemen dat je nu de ingangen zoals d2 declareert als INPUT_PULLUP ?

In dat geval kun je de ingangen (al dan niet via een weerstand) aan 5 volt hangen, en ze aansluiten op de analoge ingangen.
Die moeten daar dan natuurlijk wel voor beschikbaar zijn.
Dan kun je dus beter zien of de waarde echt aan nul gelegd word, in plaats van dat je ziet of de waarde onder de zeg maar 2.3 volt zit, of er boven.

Die eventuele weerstand per ingang, zal er voor zorgen dat het stroomverbruik van het geheel beperkt zal worden, want er zal altijd een stroom gaan lopen tussen 5 volt en GND, en dat bij elke ingang.

INPUT_PULLUP zet ook 5 volt op de ingang, maar via een weerstand-achtige constructie.
De weerstand die daarmee gecreƫerd word, is echter nogal hoog.
En daarom wint de 1K weerstand het van de interne PULLUP weerstand.
Je zou daarom ook een lagere weerstand kunnen gebruiken die je tussen de ingang en 5 volt schakelt.
Zo kun je dan ook alleen INPUT declareren, dus zonder de _PULLUP.
Maar daarmee ga je wel het stroomverbruik van je schakeling opvoeren.
De weerstand moet duidelijk lager zijn dan de 1K, maar niet al te laag.
Je zou 680 Ohm kunnen proberen, vanaf 820 Ohm word het risico dat je niet goed kunt zien of 'ie nou hoog of laag is te groot, vermoed ik.
Met die 680 Ohm, zou de ingang in rust ongeveer aan 2/3e van de 5 volt moeten zitten, waarmee het een duidelijke HIGH zal zijn.

Hiermee bied ik je 2 alternatieven aan, plus wat uitleg over hoe een en ander werkt.
Als je hier niets mee kunt, zul je uitgebreider in moeten gaan op wat je aan het bouwen bent en wat je verder al in gebruik hebt op je Arduino (welke is dat eigenlijk ?).

Wat ik gemaakt heb is een knopstart voor mengpanelen. Als de fader open gaat of je drukt op de startknop gaat er een puls naar de pc toe.

Het probleem is dat sommige mengpanelen een weerstand van 1k over de knopstart hebben staan waardoor de schakeling dit ziet als eens startpuls. Die weerstand kan ik er niet uithalen!

Als ik over de d2 meet naar massa heb ik 4.24 volt, als ik contact maakt dan loopt er 1.19ma. De spanning valt met de 1k weerstand over de ingang naar bijna 0 volt.

Een stukje van de gebruikte code:

pinMode(BUTTON_PIN_1, INPUT_PULLUP);

debouncer_1.attach(BUTTON_PIN_1);
debouncer_1.interval(INTERVAL); // interval in ms

void loop() {

debouncer_1.update();
if ( debouncer_1.rose() ) {
pin1 = 0;
}

Hoi.

Dank je voor de nadere uiteenzetting van jouw project.

Met de door jou gegeven data, kan de wet van Ohm worden toegepast.
Die luidt U=I*R.
Aangezien jij U en I geeft, kunnen we R uitrekenen.
Die is dan U/I, oftewel 4.24/0.00119.
Dat resulteert in 3563,025210084034, aldus mijn windows rekenmachine.
Das dus zo'n 3K6.
Minus de 1K weerstand, kom je uit op 2K6 voor de interne "weerstand" van de Arduino.
Jouw 1K naar GND wint dat dus gemakkelijk.

Das allemaal leuk om te weten, maar met het eerder gegeven antwoord moet je er ook iets mee kunnen.
Mijn (voor de hand liggende) aanname blijkt dus correct.
Je gebruikt een of andere functie of library voor debounce, dat is te zien in je code snippet.
Ik raad je overigens aan eens te gaan kijken op de snippets r us site als je eens tijd hebt.
Maar dat heeft verder niets te maken met de problematiek die je hebt waargenomen.
Dus lees mijn vorige antwoord nog eens door, en als je daar iets niet van begrijpt of er meer vragen over hebt hoor ik je graag weer.

Heb het werkend, heb een weerstand van 1k in serie met de ingang van de arduino gezet. daarachter een weerstand van 1k naar de plus die de spanning op de ingang houd.

dx2000.jpg

dat heet een externe pull_up prima gedaan