Op 4 november 2010 10:26:12 schreef shizzle dizzle:
Ik heb een vraagje over de DRC instellingen en PCB instellingen.

Ik heb voor een print de DRC instellingen en de PCB instellingen voor mijn doeleinden goed ingesteld. Nu is mijn vraag: Kan ik deze instellingen ook ergens opslaan, zodat ik ze bij een volgende print ook weer kan gebruiken ?

Ik kan in de verschillende menu's nergens een save button of iets dergelijks vinden.

Of moet ik een default lege pcb aanmaken met alle goede instellingen ? Zodat ik deze dan in een nieuw project kan toevoegen ?

Ja doodsimpel : D - R om je desing rules te openen.
in de linkerkolom klik je met de rechtermuistoets. op het popupmenutje kies je nu simpelweg export ...
altium komt vragen waat je wilt ( alles , of alleen de geselecteerde : je kan er een aantal highlighten en dan alleen die exporteren.

import gebeurt op de zelfde manier. tijdens import kan je kiezen : toevogen of overschrijven.

simpel newaar.

maar je bent beter af met dat te sturen vanuit je schema. bestudeer eens hoe je blankets aanmaakt en daar rules op zet in je schema. dat is ongelofelijk krachtig.

ik heb ook een hoop scriptjes voor de geinteresseerden die je toestaan om allerhande zaken to automatiseren in de pcb ( fonts en designators formatteren en nog veel meer )

je kan ook een ganse print inclusief alle instellingen ( drc , layerstack en ganse reutemeteut ) opslaan en dat gebruiken als template.

om templates in te stellen : je saved je werk als een standaard pcbdoc.
ga dan naar DXP -> preferences. onder System ga je naar New document defaults. en daar zet je gewoon de link naar jouw 'standaard pcb'.

ik heb zo ene ganse project template incluseif schematic sheet, pcb form , output generaotrne , script en menu systeem en nog veel meer.
kwestie van dat 1 keer aan te maken. in mijn output generator heb ik bakken presets om allerhande views te trekken , voor de assemblage madma, voor de assemblage robot bediener, voor de pcb boer , voor de componentenboer , ik export naar excel templates met direct import van digikey.

af en toe tune ik de template bij en die propageert dan naar alle projecten. ik spendeer geen menuut meer aan al dat backend gedoe. das klikkerdeklik en de pdf files, gerber , drill en bom vliegen er direct uit.

nu ben ik bezig met een scriptje te maken dat dat spul automatisch in de juiste folders zwiert zodat ik zelfs dat niet meer hoef in te tikken ( gebruik projectnaam als foldernaam , creer een output structuur en vul aldie paden in in de generatoren. die paden zelf zitten op een centrale file server. na creatie en plaatsen van output files wordt er ingelogd op een wiki systeem en de links worden automatisch op de project page geplaatst. de uiteindelijke bedoeling is dat ik 1 keer op een knop hoef te klikken , koffie ga drinken , en alles is geupdated en gepublished op de projectservers. de mensen die toegang nodig hebben tot de laatste documenten hebben dan altijd de laatste versie.

@m14 O - L option layers bijvoorbeeld een mechanical layer
er staat onder de lijst met mecha's ene checkbox 'only show enabled' , klik die af. dan heb je alle layers. enable daar een nieuwe layer en vort met de geit.
ditto voor andere typen layers.

maar waarom zo moeilijk doen met de .designator ?
ik heb daar een scriptje voor. per default staan designators af ( massaproductie) . als ik mijn scriptje lanceer dan trekt dat alle designators naar een gecontroleerde font en size, zet autoposition op center en draait de strings ( ik moet er nog eens autostringsize infoefelen ). die output wordt gesaved naar een aparte pdf voor de assemblagemadam.

Op 25 oktober 2010 11:04:48 schreef shizzle dizzle:
Ik heb soms ook dat ik deel schema's heb die steeds het zelfde zijn.

Een voorbeeld is een print die 8 maal een analoog signaal als output heeft.

Op deze print zit dus 8 maal dezelfde componenten met min of meer dezelfde routing.

Zou je van zulke deelschema's ook een soort library part kunnen maken ?

Dus, je voegt een 'black box' in je schema en alle bijbehordende componenten + routing worden op de PCB geplaatst.

ja dat heet multipath design.

der zit een voorbeeld van zo een 8 kanaal audiomixer in de voorbeelden.
een kanaal wordt 1 keer getekend en 8 keer geinstantieerd. het gaat zover dat de layout zelfs automatis 8 keer gerepliceerd word.als je r1 verplaats volgende andere 7 de zelfde bewerking en je kan de offset ingeven voor x en y. stel het 1 kee rin en de tool doet de andere 7 kanalen voor jouw ( of 24 of 2378 kanalen ) wijzig je 1 spoortje dan volgen alle andere kanalen synchroon mee.

der is ook de mogelijkheid om stukken schema te pushen naar 'snippets'.

er zijn een bak voorbeeldvideos te vinden bij altium :

http://forums.altium.com/forums/219086/ShowPost.aspx

daar zitten voorbeelden tussen waar je ogen gaan van wateren ... dingen die je niet voor mogelijk houdt en waar je vroeger uuuren aan spendeerde en met allerhande lapsussen een bocht rond maakte. 2 muisklikken en tis geklonken.

bijvoorbeeld het advanced placement topicje. zorg dat er een mat op je tafel ligt of anders gaat je kin serieus pijn doen van het openvallen... ( en zet maar een emmer en dweil klaar ook )

tis kwestie van te weten wat je met de CTRL toets kan doen tijdens het placement van componenten ...

Op 24 november 2010 01:36:48 schreef free_electron:
[...]bijvoorbeeld het advanced placement topicje. zorg dat er een mat op je tafel ligt of anders gaat je kin serieus pijn doen van het openvallen... ( en zet maar een emmer en dweil klaar ook )

Ik zet liever een bak koffie klaar ;)

Ik moet je toegeven dat ik, nu ik altium steeds beter in de vingers krijg, het een steeds mooier pakket begin te vinden. Ik ben al druk aan het sparen om het te kopen (wil uiteindelijk ook voor mezelf beginnen) En volgens mij is er nog veel meer mogelijk.

Ik zal die multipath design ook nog proberen. ik moet over een paar weken een print maken met veel dezelfde circuits, daar zal het goed van pas komen.

Ik ben ook wel geintereseerd in de scripts van jou. Moet dat via de mail, of zet je dat weer online ?

Ik meld me ook voor de scripts :). Ondanks dat ik al redelijk veel printen met het pakket heb getekend is er nog heeeeel veel te leren!

Heb je misschien ook een template of een voorbeeld van een print / project. Ik heb tot nu toe altijd, naar eigen inzicht (en hoe ik het bij iemand in een bedrijf heb overgenomen), bepaalde (mechanical) layers voor een bepaalde toepassing gebruikt. Daarom zou ik graag eens een voorbeeld zien hoe het wellicht beter kan :).

hieronder een voorbeeldscriptje


Procedure ReDrawCurrentBoard(Dummy : Integer = 0);
Begin
    If Client <> Nil Then
    Begin
        Client.SendMessage('PCB:Zoom', 'Action=Redraw', 255, Client.CurrentView);
    End;
End;

Procedure ResetComponents;
Var
    Component               : IPCB_Component;
    BoardHandle             : IPCB_Board;
    BrdIterator             : IPCB_BoardIterator;
    Counter                 : integer;
Begin
    BoardHandle   := PCBServer.GetCurrentPCBBoard;
    If BoardHandle = Nil Then begin
       Exit;
    end;
    // Create a board iterator to fetch the components.
    BrdIterator := PCBServer.GetCurrentPCBBoard.BoardIterator_Create;
    BrdIterator.AddFilter_ObjectSet(MkSet(eComponentObject));
    BrdIterator.AddFilter_LayerSet(AllLayers);
    BrdIterator.AddFilter_Method(eProcessAll);
    PCBServer.PreProcess; // set up undo system
    Component := BrdIterator.FirstPCBObject;
    While (Component <> Nil) Do
    Begin
        PCBServer.SendMessageToRobots(
              Component.I_ObjectAddress,
              c_Broadcast,
              PCBM_BeginModify ,
              c_NoEventData); // Alert undo system to a change
        //ipcb_component.SourceLibReference
        Component.NameOn := True;  // Make the change
        Component.CommentOn := False;
        //component.comment
        Component.Comment.Bold :=false;
        Component.Comment.UseTTFonts :=false;
        Component.Comment.Width := MilsToCoord(5);
        Component.Comment.Size := MilsToCoord(30);
        Component.Name.Bold := false;
        Component.Name.UseTTFonts := false;
        Component.Name.Width := MilsToCoord(5);
        Component.Name.Size := MilsToCoord(30);
        PCBServer.SendMessageToRobots( Component.I_ObjectAddress,
                                                  c_Broadcast,
                                                  PCBM_EndModify ,
                                                  c_NoEventData);
                   // Inform undo system the change is complete
       Component := BrdIterator.NextPCBObject;
    End;  // While (Component <> Nil)

    BoardHandle.BoardIterator_Destroy(BrdIterator);
    PCBServer.PostProcess;  // clean up undo system
    ReDrawCurrentBoard;  // Redraw so we see any visible changes
End;

bovenstaand scriptje gaat over alle componenten in het huidig geselecteerde pcb en zet alle designators en alle comments op niet-true type , 30 mils hoog en 5 mils breed.

scriptje 2 :


Procedure CleanMechanicals;
// If the part belongs to the mechanicals lib :
// - Designator off , 35 mil 5 mil wide
// - comment off , 35 mil , 5 mil wide

Var
    Component               : IPCB_Component;
    BoardHandle             : IPCB_Board;
    BrdIterator             : IPCB_BoardIterator;
    Counter                 : integer;
Begin
    BoardHandle   := PCBServer.GetCurrentPCBBoard;
    If BoardHandle = Nil Then begin
       Exit;
    end;
    // Create a board iterator to fetch the components.
    BrdIterator := PCBServer.GetCurrentPCBBoard.BoardIterator_Create;
    BrdIterator.AddFilter_ObjectSet(MkSet(eComponentObject));
    BrdIterator.AddFilter_LayerSet(AllLayers);
    BrdIterator.AddFilter_Method(eProcessAll);
    PCBServer.PreProcess; // set up undo system
    Component := BrdIterator.FirstPCBObject;
    While (Component <> Nil) Do
    Begin
        PCBServer.SendMessageToRobots(
              Component.I_ObjectAddress,
              c_Broadcast,
              PCBM_BeginModify ,
              c_NoEventData);
        If ( Component.SourceLibReference ='FIDU-SQUARE' |
             Component.SourceLibReference ='FIDU-ROUND'  |
             Component.SourceLibReference ='GNDSTRAP'  |
             Component.SourceLibReference ='ESD'  |
             Component.SourceLibReference ='MOUNTING'  |
             Component.SourceLibReference ='STLOGO'
            ) Then
            Begin
                 Component.NameOn := False;
                 Component.CommentOn := False;
                 PCBServer.SendMessageToRobots( Component.I_ObjectAddress,
                                                  c_Broadcast,
                                                  PCBM_EndModify ,
                                                  c_NoEventData);
            end;
       Component := BrdIterator.NextPCBObject;
    End;  // While (Component <> Nil)

    BoardHandle.BoardIterator_Destroy(BrdIterator);
    PCBServer.PostProcess;  // clean up undo system
    ReDrawCurrentBoard;  // Redraw so we see any visible changes
End;

dit gaat over alle componenten en kijkt of hun naam voorkomt in een lijstje . indien het een van de gekozen namen betreft worden zowel designator als comment hidden gezet. dit scripje wordt gebruikt om de tekst van mechanische elementen zoals fiducials , logos , montagegaten etc te verwijderen ( ik heb een library met allerhande mechanische elementen )

scriptje 3


Procedure CleanTestpoints;
Var
    Component               : IPCB_Component;
    BoardHandle             : IPCB_Board;
    BrdIterator             : IPCB_BoardIterator;
    Counter                 : integer;

Begin
    BoardHandle   := PCBServer.GetCurrentPCBBoard;

    If BoardHandle = Nil Then begin
       Showmessage('Cannot grab Board');
       Exit;
    end;
    // Create a board iterator to fetch the components.
    BrdIterator := PCBServer.GetCurrentPCBBoard.BoardIterator_Create;
    BrdIterator.AddFilter_ObjectSet(MkSet(eComponentObject));
    BrdIterator.AddFilter_LayerSet(AllLayers);
    BrdIterator.AddFilter_Method(eProcessAll);
    PCBServer.PreProcess; // set up undo system
    Component := BrdIterator.FirstPCBObject;
    While (Component <> Nil) Do
    Begin
        PCBServer.SendMessageToRobots(
              Component.I_ObjectAddress,
              c_Broadcast,
              PCBM_BeginModify ,
              c_NoEventData); // Alert undo system to a change
              if (Component.SourceLibReference ='TESTPOINT' |
                  Component.SourceLibReference ='TESTPIN' ) then
              begin
//                 Showmessage ('Name' + Component.Name.Text);
//                Showmessage ('Description' + Component.Descriptor);
//                 Showmessage ('Library ref' + component.SourceLibReference);
                  //ipcb_component.SourceLibReference
                   Component.NameOn := FALSE;  // Make the change
                   Component.CommentOn := True;
                   Component.Comment.Width := MilsToCoord(8);
                   Component.Comment.Size := MilsToCoord(45);

                   PCBServer.SendMessageToRobots( Component.I_ObjectAddress,
                                                  c_Broadcast,
                                                  PCBM_EndModify ,
                                                  c_NoEventData);
                   // Inform undo system the change is complete
              end;
        Component := BrdIterator.NextPCBObject;
    End;  // While (Component <> Nil)

    BoardHandle.BoardIterator_Destroy(BrdIterator);
    PCBServer.PostProcess;  // clean up undo system
    ReDrawCurrentBoard;  // Redraw so we see any visible changes
End;

dist scriptje gaat op zoek naar testpunten en pinnen. van die dingen wil ik juist de comment zichtbaar hebben in een groter lettertype maar de designator niet zien. het interesseert mij niet of het nu om TP9 of TP23 gaat ik zie liever staan +5V en VCHAN bijvoorbeeld. in mijn schema noemen alle testpunten TP? maar in het comment field zet ik de naam van het signaal. met dit scriptje komt al dit spul dan automatisch juist te staan. zo hoef je niet tlekens uit te vlooien welke TP je nu nogih hebt : de juiste namen staan meteen op de print

scriptje 4


Procedure CleanJumpers;
Var
    Component               : IPCB_Component;
    BoardHandle             : IPCB_Board;
    BrdIterator             : IPCB_BoardIterator;
    Counter                 : integer;

Begin
    BoardHandle   := PCBServer.GetCurrentPCBBoard;

    If BoardHandle = Nil Then begin
       Showmessage('Cannot grab Board');
       Exit;
    end;
    // Create a board iterator to fetch the components.
    BrdIterator := PCBServer.GetCurrentPCBBoard.BoardIterator_Create;
    BrdIterator.AddFilter_ObjectSet(MkSet(eComponentObject));
    BrdIterator.AddFilter_LayerSet(AllLayers);
    BrdIterator.AddFilter_Method(eProcessAll);
    PCBServer.PreProcess; // set up undo system
    Component := BrdIterator.FirstPCBObject;
    While (Component <> Nil) Do
    Begin
        PCBServer.SendMessageToRobots(
              Component.I_ObjectAddress,
              c_Broadcast,
              PCBM_BeginModify ,
              c_NoEventData); // Alert undo system to a change
              if ( Component.SourceLibReference ='JMPR2' |
                   Component.SourceLibReference ='JMPR3-12' |
                   Component.SourceLibReference ='JMPR3-23' |
                   Component.SourceLibReference ='JMPR2-closed' )
              then begin
//                 Showmessage ('Name' + Component.Name.Text);
//                Showmessage ('Description' + Component.Descriptor);
//                 Showmessage ('Library ref' + component.SourceLibReference);
                  //ipcb_component.SourceLibReference
                   Component.NameOn := FALSE;  // Make the change
                   Component.CommentOn := True;
                   Component.Comment.Width := MilsToCoord(8);
                   Component.Comment.Size := MilsToCoord(45);

                   PCBServer.SendMessageToRobots( Component.I_ObjectAddress,
                                                  c_Broadcast,
                                                  PCBM_EndModify ,
                                                  c_NoEventData);
                   // Inform undo system the change is complete
              end;
        Component := BrdIterator.NextPCBObject;
    End;  // While (Component <> Nil)

    BoardHandle.BoardIterator_Destroy(BrdIterator);
    PCBServer.PostProcess;  // clean up undo system
    ReDrawCurrentBoard;  // Redraw so we see any visible changes
End;

dit ding zoekt alle jumpers en verbergt ook weer de designater maar toont de comment
ik heb 4 jumper types in mijn library :
JMPR2
JMPR2-CLOSED
JMPR3-12
JMPR3-23

JMPR2 is een 2 pins jumpertje wat per default NIET is geinstalleerd ( de pinnetjes staan op het bord maar het jumpertje wordt er iet opgeprikt. )
de -closed versie is wel geinstalleerd.
JMPR3 is een 3 pins jumpertje ( 2 pinnetjes , en het achtervoegsel -12 of -23 geeft aan waar het jumpertje zit ( er is ook JMPR3 gewoon : die is dan open )

in mijn library zitten speciale tekststrings die aan de assemblagemadam aangeven waar ze moeten zitten. op een aparte mechanical layer is dan een polygon getekend zodat je een mooie overlay krijgt op je assemblage drawing waar de jumpertjes komen te zitten. ook het 3d model reflecteert de juiste positie.

scriptje 5



Procedure HideCommon;
Var
    Component               : IPCB_Component;
    BoardHandle             : IPCB_Board;
    BrdIterator             : IPCB_BoardIterator;
    Counter                 : integer;
            q : string        ;
Begin
    BoardHandle   := PCBServer.GetCurrentPCBBoard;

    If BoardHandle = Nil Then begin
       Showmessage('Cannot grab Board');
       Exit;
    end;
    // Create a board iterator to fetch the components.
    BrdIterator := PCBServer.GetCurrentPCBBoard.BoardIterator_Create;
    BrdIterator.AddFilter_ObjectSet(MkSet(eComponentObject));
    BrdIterator.AddFilter_LayerSet(AllLayers);
    BrdIterator.AddFilter_Method(eProcessAll);
    PCBServer.PreProcess; // set up undo system
    Component := BrdIterator.FirstPCBObject;
    While (Component <> Nil) Do
    Begin
        PCBServer.SendMessageToRobots(
              Component.I_ObjectAddress,
              c_Broadcast,
              PCBM_BeginModify ,
              c_NoEventData); // Alert undo system to a change
                             q :=        component.SourceHierarchicalPath;
                             q := uppercase(q);
                                                  //ipcb_component.
              if ( q = 'LOADGENERATOR' |
                   q = 'COMMON' ) then
              begin
                   if ( uppercase(Component.SourceLibReference) ='JMPR2' |
                        uppercase(Component.SourceLibReference) ='JMPR3-12' |
                        uppercase(Component.SourceLibReference) ='JMPR3-23' |
                        uppercase(Component.SourceLibReference) ='JMPR2-CLOSED' |
                        uppercase(Component.SourceLibReference) ='TESTPIN' |
                        uppercase(Component.SourceLibReference) ='TESTPOINT'  ) then
                        begin
                        end
                   else
                       begin
                            Component.NameOn := false;  // Make the change
                            Component.CommentOn := false;
                            PCBServer.SendMessageToRobots( Component.I_ObjectAddress,
                                                           c_Broadcast,
                                                           PCBM_EndModify ,
                                                           c_NoEventData);
                       end;
              end;

        Component := BrdIterator.NextPCBObject;
    End;  // While (Component <> Nil)

    BoardHandle.BoardIterator_Destroy(BrdIterator);
    PCBServer.PostProcess;  // clean up undo system
    ReDrawCurrentBoard;  // Redraw so we see any visible changes
End;

bovenstaande gaat over alle componenten . het kijkt of ene component van een bepaalde sheet komt in het schema (Loadgenerator of common)
in dat geval wordt er gekeken of het om een tespunt of jumper gaat.
in het geval van een testpunt of jumper : poten af !. indien het om iets anders gaat : zet comment en designator af.

op onze applicatieborden zit er telkens een blok suppor tlogica en peripherie die NIKS met de harddisk chip zelf te maken heeft. om de borden properder te houden onderdruk ik voor die elementen alle tekst ( behalve als het een testpunt of jumper is )
zo is het makkelijker om iets te vinden op het bord, je hebt minder tekst staan , en de tekst die er staat is relevant voor het te testen component. )

bon , omdat de script post lang werd maak ik een tweede post.

ik zal mijn templates eens uitkuisen (-kuch- de logos verijwderen >:) )
en dan mik ik hem wel op het upload archief.

ik heb voor mijn collectie scripts ook een GUI gemaakt en die zit op mijn altium menu onder een shortcut.
met een paar klikken op de knop roep ik die scriptjes dan op.
ik heb nog een pak andere scripts maar ik moet die eerst eens 'uitkuisen'

de scripting taal is vrij eenvoudig maar de code editor wringt tegen. ( zeker als je visual studio gewend bent )

het is rotvervelend omdat je niet weet wat je nodig hebt.
als je in visual studioe ene variabele aanmaakt van een bepaald type dan weet de code editor welek contextmenu hij moet tonen. de altium code editor doet dat niet ...

Je kan dit oplossen door niet de naam van je variabele in te tikken maar ipcb_component. ( en dan popt de contextmenu op )
Achteraf verwijder je de ipcb_component en plakt er je variabele naam in.

en nog iets : ze 'claimen' dat de boel case sensitive is ... NOT ! dat pascalscript is niet case sensitive.

[Bericht gewijzigd door free_electron op (71%)]

Op een of ander manier zie ik de pin benaming niet meer in de schematic. Dit is dan in de gele representatie van een ic in de schematic Dit is gekomen na het terug zetten van mijn computer met een ghost image toen ik alles net geinstalleerd had, toen was alles wel goed.

Hier een link naar wat ik bedoel.

http://www.uploadarchief.net/files/download/geenpinbenaming.png

Dit is ook in de library het geval. Ook bij de tutorial files van altium zelf.

Ik heb eerst gedacht dat het aan mijn display driver ligt. Die heb ik ook opnieuw geinstalleerd, maar geen succes. Weet iemand waardoor dit komt ?

aan je fonts liggen rommelen ?
stel eens je system font terug in in altium. ( zit ergens on der het DXP menu )

aangezien je nergens text hebt zou het daar kunnen aan liggen.
de default font is times new roman. die is toch niet toevallig overschreven door een of andere brak programma ?

Ik heb er nog niet naar gekeken, Zit nu achter m'n laptop waar het wel goed op draait.

Ik moet nu een printje maken die ik zelf ga etsen. Hiervoor moet ik een op een de top en de bottom layer printen. Maar hij print de layers steeds vergroot uit. Weet iemand waar ik dit in kan stellen ?

Ik zit zelf te kijken bij fabrication outputs en dan PCB Prints. Hierin kun je de verschillende layers uit printen.

Heb je een .CAM-file met daarin alle layers? Dan is het heel simpel: Layers selecteren die je wilt printen. Dan "File - Print Preview". In het venster onder "Print Scaling" 'user scale' op '1' zetten :).

ik ben ook wat aan het spelen met altium. Indrukwekkend hoor, zeker de autorouter. Op de meeste punten zou ik het zelf niet beter kunnen (wel zelf de componenten geplaatst). Maar ik vind dit wel vreemd:
http://www.uploadarchief.net/files/download/altium_grapjes_01.png

Waarom doet hij dit? Ik heb niets vreemds ingesteld bij routing topology, dus waarom?

Bedoel je die rare paden of de design rule error op die pads? Misschien moet je eerst die designrule fouten oplossen, wellicht doet de autorouter dan wat slimmers.

Volgens mij heb je er via's inzitten. Het lijkt er op dat die niet het zelfde net hebben als de track waar ze in zitten .... of die via zit in de andere layer in een ander net. Dan gaat het fout.

Overigens heeft de autorouter mij nog nooit beter resultaat opgeleverd dan wanneer ik het zelf maak. Vind het vaak lelijk en niet praktisch. Maar ligt waarschijnlijk ook aan de complexiteit van de print. Ik vind je voorbeeld er trouwens ook vaag uitzien, zeker het onderste spoor op de toplayer.

[Bericht gewijzigd door Anoniem op (10%)]

Heeft het niet te maken dat uw componenten niet in de juiste room staan?

oeh ik vrees allemaal beginnersfouten.

Het ging mij eigenlijk om het rare spoor op de top layer.

De DRC errors moet ik nog uitzoeken, het komt er op neer dat alle pads als 'fout' worden gezien.

Wat bedoel je met die via's niet in het juiste net zitten? Op de rest van de print gaat het wel goed.

Room? Room? Dat rode ding wat ergens uit beeld staat? Hoe krijg ik mijn componenten daar in? Als ik de room versleep gaan de componenten die heel ergens anders staan mee.

inderdaad beginnersfouten.

je moet EERST die rooms zetten en daar dan je componentne in plaatsen..

niet omgekeerd !

trouwens die rooms kan je uitschakelen. Klik dat 'rode ding' aan en druk op je delete toests op je keyboard.. weg room.

dat is nu de reden dat je rare kronkels krijgt op je print. de router heeft een conflict :
1e regel zegt : track in room
2e regel zegt : track binnen de keepout ..

en je room staat in je keepout area ... dus de router trekt allemaal rare kronkels omdat hij niet weet wat hij moet doen.

Ik heb weer een paar vragen, ik hoop dat de 'expert' Vincent :) en andere mij wat antwoorden kunnen geven.

Het gaat vooral om multichannel, multisheet en harnesses. Ik heb al wat voorbeelden zitten te bekijken van altium. Ook stond het ontwerp van hun nanobord in de voorbeelden, dat is echt indrukwekkend hoe ze dat overzichtelijk proberen te houden door alle mogelijkheden van altium te gebruiken.

Omdat mijn printen steeds ingewikkelder worden, wil ik ook meer van deze mogelijkheden gebruik maken. Nu heb ik een paar vragen hierover:

1. Hierboven werd er ook al over gerept, maar wat is het nut van rooms ? En hoe moet je hiermee omgaan. Hierboven werd bv. al gezegd dat de rooms eerst te plek moeten worden gezet en daarna de componenten.

2. Kun je harnessen gebruiken in combinatie met het multichannel principe ? Ik zie in hun voorbeelden dat ze alleen ports gebruiken om met het multichannel 'sheet symbol' te verbinden.

3. Dezelfde vraag, dan alleen met een bus i.p.v. harness.

4. Als ik in altium de voorbeelden van het nanobord bekijk, dan zie ik in sommige schema's een recycle teken op bepaalde 'blokken' Bijvoorbeeld in deze pdf op pagina 2 http://www.google.nl/url?sa=t&source=web&cd=1&ved=0CBoQFjAA&url=http%3…

Kan iemand mij ook uitleggen wat dit betekend ?

dat recyclageteken is een schema wat in de vault zit.

je kan een schema in de vault stoppen zodat je het later kan hergebruiken. Je kan aan een instantie van dergelijk schema niks veranderen BEHALVE de designators ( U1 , R1 etc ) in jouw design.

Stel dat je een systeem maakt en je hebt voor elk plugin bord dezelfde interface connectors en voedingen. je maakt dat 1 keer , stopt dat in de vault ( de kluis ) en je kan de ganse mikmak herinstantieren. als je de master in de vault aanpast rolt de rest mee. ( behalve de designators : die blijven bewaard in jouw instantie in jouw project )

Met harnesses en multichannel heb ik nog niet zelf iets gedaan. ik heb wel al eens met dat mengpaneel ontwerp gespeeld maar nog nooit een echt multichannel design gedaan vanaf nul.

het voordeel van een harness tov een bus is dat altium zelf bijhoudt wat er in dat harness zit. een bus is gewoon een lijn die electrisch niks doet. dat is enkel eye-candy ... ( behalve in fpga apps dan )

als jij ergens een signaal toevoegt in een harness dan propageert dat naar alle gekoppelde harness entries. bij een bus iis dat gewoon een wire met een netnaam , een bus connector en een dikke lijn. altium trackt niet wat je er in ramt. Bus is een historisch artefact. Harness vervangt dat en automatiseert het.

Rooms... daar valt veel over te zeggen.

het voordeel van een room is dat je je bord kunt partitioneren. maar je moet het bekijken vanuit professionele ontwikkeling. hobbyisten werken meestal omgekeerd en dan wringen rooms tegen.
in de echte wereld ligt je bord omtrek vast. Je krijgt de buitenmaten en je zorgt maar dat alles past.
Elk afzonderlijk subsheet in je schema krijgt ene room. als je de room vastpakt dan verplaatsen de componentne die er in zitten mee.
je gaat dus eerst je rooms fitten op je beschikbare bord ruimte. zoveel ruimte voor voeding, zoveel voor cpu etc. daarnaa kan je de rooms verplaatsen en met je plaatsing van functionele blokken gaan spelen. eenmaal je klaar bent met je plaatsing kan je dan in de rooms gaan werken.

je kan ook dingen gaan splitten : ik doe de layout van room xyz en mijn collega doet room ab enc. zo blijf je uit elkaars vaarwater.

dit zijn geavanceerde mechanismen om collaborative design te doen , je design te partitioneren . je kan bijvoorbeeld bij je designators aangeven : alles wat in room x zit moet in d erange 100 tot 199 vallen. alles in room y moet 200 tot 299 zijn.
als je dan op je bord naar een designator kijkt weet je direct vanuit welk subschema dat componente komt.
dat wordt gedaan bij grote ontwerpen om tijdens het debuggen znel te kunnen tracen welk element van weke sheet komt.

Bedankt weer voor het antwoord.

Je ziet bij het voorbeeld van het nanobord dat ze ook veel harnesses gebruiken. Ik heb de print ook bekeken, ik moet zeggen dat ik het echt knap vind van degenen die dit bord getekend heeft, daarbij lijken mijn printen 'peanuts'.

Ik ben zelf bezig met een print om hydraulische ventielen aan te sturen. Daarbij heb ik veel dezelfde schema's, Ik moet bijvoorbeeld 8 proportionele ventielen kunnen aansturen en dat is 8 keer dezelfde layout, daar lijkt mij de multichannel ideaal voor en dat zal het ook zijn. Behuizing is al bekend dus ik zal ook proberen om alles uit de rooms te halen.

Voor multi channel designs plaats je een sheet symbol.

Voor de designator van dat sheet symbol gebruik je het keywoord 'REPEAT' met tussen haakjes drie parameters zijnde (naam, first channel, last channel).

De sheet entries die moeten uitgesplitst worden naar de verschillende channels, krijgen ook het keywoord 'REPEAT' met het netlabel tussen haakjes. Dan wordt het juiste signaal aan de juiste sheet verbonden.

De sheet entries waarvan het netlabel zonder repeat is vermeld, wordt dit signaal op alle sheets met elkaar verbonden.

Je kan alle details en werkwijze lezen op http://wiki.altium.com/display/ADOH/Creating+a+Multi-channel+Design.

Ik heb een dimbare RGB switched mode power LED driver ontwikkeld en de driver gedeeltes van rood, groen en blauw is een 3-channel uitvoering op deze wijze. Dus één maal de driver tekenen.

Weet iemand hoe je board cutouts doet met ronde hoeken?

Op 24 november 2010 16:58:49 schreef free_electron:

ik zal mijn templates eens uitkuisen (-kuch- de logos verijwderen >:) )
en dan mik ik hem wel op het upload archief.

ik heb voor mijn collectie scripts ook een GUI gemaakt en die zit op mijn altium menu onder een shortcut.
met een paar klikken op de knop roep ik die scriptjes dan op.
ik heb nog een pak andere scripts maar ik moet die eerst eens 'uitkuisen'

Heej Free heb je inmiddels al ergens iets online gezet? Het kan zomaar zijn dat ik die link ergens gemist heb hoor.

Je scriptjes zijn verrekte handig trouwens, tnx alvast!

Mzzls

Ik ben nu druk aan het designen in altium.

Ik heb nog een (fundamentele) vraag.

Ik heb een circuit die ik in dit geval 7 keer nodig heb. Dit heb ik uitgevoerd zoal Peter Claus het uitlegt, met een sheet symbol in de schematic en dan de repeat keyword gebruiken voor de designator.

Nu is het het geval dat ik dit circuit ook weer in 2 delen wil hebben, omdat ik de parts waar een grootte stroom door heen gaan dicht bij de connector wil hebben en de parts waar een lage stroom door heen gaat dicht bij de microcontroller wil hebben.

Nu zou ik dit denk wel voor elkaar kunnen krijgen door 7 extra rooms te plaatsen in de PCB's en bijvoorbeeld de 'lage stroom' parts (of de 'hoge stroom' parts) uit de betreffende component class te halen en in de extra rooms te doen. Dan kan ik nog steeds de layout eenmaal tekenen (dus een layout voor de hoge stroom voerende parts en een layout voor de lage stroom voerende parts) en kopieeren naar andere rooms.

Nou vroeg ik mij af of dit de juiste manier is. Het schema kan ook aan gepast worden, maar dan wordt die minder overzichtelijk. Het lijk mij niet de bedoeling dat de layout van de PCB de vorm van de schematic bepaalt. Ik hoop dat het wat duidelijk is, als dit niet zo is zo ik het schema kunnen plaatsen.