Det här är inte helt elementärt.
Vill man ha en funktion som liknar en telefonanknytning så behövs det ganska mycket logik.
Absolut enklaste sättet torde vara att hitta en skrotad analog PABX som medger samtal mellan anknytningarna.
En sådan tingest torde ha något av de sämsta andrahandsvärden man kan föreställa sig.
Om man envisas med att göra något sådant själv i programvara så skulle en tänkbar lösning kunna se ut så här:
* Ett utgångsläge när systemet väntar på att någon ska lyfta luren
* Ett linjerelä eller optokopplare som detekterar "lurfyft"
* När luren är av så sänds en kopplingston, -10 dBm 440 Hz till den anslutna telefonen. Om den andra luren redan är lyft genereras upptaget- eller spärrton tills luren läggs på
* Sedan väntar systemet på "nummertagning". Eftersom det bara finns en annan telefon att ringa till så
kan vilket nummer som helst tas på fingerskivan, men man räknar in rätt antal pulser (=linjeavbrott) för att t.ex. ett 5-siffrigt telefonnummer
matats in. Om inget helt nummer matats in inom, säg, 30 sekunder, eller ett ogiltigt så bryts kopplingstonen och systemet återgår till utgångsläget
* När ett giltigt nummer matats in så genereras ringspänning, 20 Hz 80 V mot den andra telefonen.
* När luren lyfts i andra änden så avbryts ringspänningen och signalvägen mellan telefonerna öppnas
* När någon av telefonlurarna läggs på så bryts förbindelsen mellan telefonerna och systemet återgår till utgångsläget.
Den lösning som jag själv använde 1988/89 när jag var med att utveckla ett telefonlinjeinterface till Ericsson NMT-telefoner som satt på Finlands och Gotlandsfärjorna var att göra en "tillståndsmaskin" som hade ett antal tillstånd där man hanterar varje händelse eller väntetid innan man går till något annat tillstånd. De tillstånd som finns representeras av en lista av subrutinadresser, som en pekare vars värde bestäms av "tillståndsvariabeln"-
För att hålla rätt på tiden så räknas realtidsinterrupt så att programloopen går ett varv för varje "tick", som lämpligen är 2 ms, eller
en lämplig fraktion av pulstiden, 10 ms, från en fingerskiva. Detta blir i princip en "mjukvaru-UART".
En sådan funktion för NMT-telefonen gjordes i ett par hundra rader 6800 och senare 68HC11-assembler.
Alla toner (440 och 20 Hz) genererades i timer-kretsar, och ringspänningen i en "bakvänd" liten nättransformator som drevs av en LM380.
"Trappstegssinus" blev använt, så timerkretsarna genererade 8 gånger utfrekvensen.
Det fungerade riktigt bra, och enheten producerades i ett trettiotal exemplar. Sedan kom motsvarande enhet från Mitsubishi som var anpassad till modernare mynttelefoner.
Kodat i C kan man nog få till detta med kanske halva antalet programrader i en Arduino eller liknande.
Inspiration till ett sådant projekt kan fås hä
Det här är inte helt elementärt.
Vill man ha en funktion som liknar en telefonanknytning så behövs det ganska mycket logik.
Absolut enklaste sättet torde vara att hitta en skrotad analog PABX som medger samtal mellan anknytningarna.
En sådan tingest torde ha något av de sämsta andrahandsvärden man kan föreställa sig.
Om man envisas med att göra något sådant själv i programvara så skulle en tänkbar lösning kunna se ut så här:
* Ett utgångsläge när systemet väntar på att någon ska lyfta luren
* Ett linjerelä eller optokopplare som detekterar "lurfyft"
* När luren är av så sänds en kopplingston, -10 dBm 440 Hz till den anslutna telefonen. Om den andra luren redan är lyft genereras upptaget- eller spärrton tills luren läggs på
* Sedan väntar systemet på "nummertagning". Eftersom det bara finns en annan telefon att ringa till så
kan vilket nummer som helst tas på fingerskivan, men man räknar in rätt antal pulser (=linjeavbrott) för att t.ex. ett 5-siffrigt telefonnummer
matats in. Om inget helt nummer matats in inom, säg, 30 sekunder, eller ett ogiltigt så bryts kopplingstonen och systemet återgår till utgångsläget
* När ett giltigt nummer matats in så genereras ringspänning, 20 Hz 80 V mot den andra telefonen.
* När luren lyfts i andra änden så avbryts ringspänningen och signalvägen mellan telefonerna öppnas
* När någon av telefonlurarna läggs på så bryts förbindelsen mellan telefonerna och systemet återgår till utgångsläget.
Den lösning som jag själv använde 1988/89 när jag var med att utveckla ett telefonlinjeinterface till Ericsson NMT-telefoner som satt på Finlands och Gotlandsfärjorna var att göra en "tillståndsmaskin" som hade ett antal tillstånd där man hanterar varje händelse eller väntetid innan man går till något annat tillstånd. De tillstånd som finns representeras av en lista av subrutinadresser, som en pekare vars värde bestäms av "tillståndsvariabeln"-
För att hålla rätt på tiden så räknas realtidsinterrupt så att programloopen går ett varv för varje "tick", som lämpligen är 2 ms, eller
en lämplig fraktion av pulstiden, 10 ms, från en fingerskiva. Detta blir i princip en "mjukvaru-UART".
En sådan funktion för NMT-telefonen gjordes i ett par hundra rader 6800 och senare 68HC11-assembler.
Alla toner (440 och 20 Hz) genererades i timer-kretsar, och ringspänningen i en "bakvänd" liten nättransformator som drevs av en LM380.
"Trappstegssinus" blev använt, så timerkretsarna genererade 8 gånger utfrekvensen.
Det fungerade riktigt bra, och enheten producerades i ett trettiotal exemplar. Sedan kom motsvarande enhet från Mitsubishi som var anpassad till modernare mynttelefoner.
Kodat i C kan man nog få till detta med kanske halva antalet programrader i en Arduino eller liknande.
Inspiration till ett sådant projekt kan fås här:
Hej Karl-Arne!